Piped-Backend/src/main/java/me/kavin/piped/utils/Multithreading.java
2022-03-16 03:21:24 +00:00

36 lines
1.2 KiB
Java

package me.kavin.piped.utils;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.function.Supplier;
public class Multithreading {
private static final ExecutorService es = Executors.newCachedThreadPool();
private static final ExecutorService esLimited = Executors
.newFixedThreadPool(Runtime.getRuntime().availableProcessors());
private static final ExecutorService esLimitedPubSub = Executors
.newFixedThreadPool(Runtime.getRuntime().availableProcessors());
public static void runAsync(final Runnable runnable) {
es.submit(runnable);
}
public static void runAsyncLimited(final Runnable runnable) {
esLimited.submit(runnable);
}
public static void runAsyncLimitedPubSub(final Runnable runnable) {
esLimitedPubSub.submit(runnable);
}
public static ExecutorService getCachedExecutor() {
return es;
}
public static <U> CompletableFuture<U> supplyAsync(Supplier<U> supplier) {
return CompletableFuture.supplyAsync(supplier, es);
}
}