diff --git a/server/src/main/java/com/soulfiremc/server/SoulFireScheduler.java b/server/src/main/java/com/soulfiremc/server/SoulFireScheduler.java index 603188fdf..47667bc81 100644 --- a/server/src/main/java/com/soulfiremc/server/SoulFireScheduler.java +++ b/server/src/main/java/com/soulfiremc/server/SoulFireScheduler.java @@ -32,12 +32,12 @@ * Used for most of the async tasks in the server, bots and plugins. */ public class SoulFireScheduler implements Executor { - private static final ForkJoinPool SF_FORK_JOIN_POOL = new ForkJoinPool(ForkJoinPool.getCommonPoolParallelism(), - ForkJoinPool.defaultForkJoinWorkerThreadFactory, - null, true); private static final ScheduledExecutorService MANAGEMENT_SERVICE = Executors.newSingleThreadScheduledExecutor(Thread.ofVirtual() .name("SoulFireScheduler-Management-", 0) .factory()); + private final ExecutorService executor = Executors.newThreadPerTaskExecutor(Thread.ofVirtual() + .name("SoulFireScheduler-Task-", 0) + .factory()); private final PriorityQueue executionQueue = new ObjectHeapPriorityQueue<>(); private final Logger logger; private final Function runnableWrapper; @@ -76,7 +76,7 @@ public void schedule(Runnable command) { return; } - SF_FORK_JOIN_POOL.execute(() -> runCommand(command)); + executor.execute(() -> runCommand(command)); } public void schedule(Runnable command, long delay, TimeUnit unit) {