From 68b843f2bd58c37fd47941f689d168e943d8a3c9 Mon Sep 17 00:00:00 2001 From: AlexProgrammerDE <40795980+AlexProgrammerDE@users.noreply.github.com> Date: Fri, 12 Apr 2024 16:59:49 +0200 Subject: [PATCH] Simplify scheduling thread --- .../java/com/soulfiremc/server/SoulFireScheduler.java | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/server/src/main/java/com/soulfiremc/server/SoulFireScheduler.java b/server/src/main/java/com/soulfiremc/server/SoulFireScheduler.java index bad38aae7..0a1fc4ad9 100644 --- a/server/src/main/java/com/soulfiremc/server/SoulFireScheduler.java +++ b/server/src/main/java/com/soulfiremc/server/SoulFireScheduler.java @@ -20,8 +20,6 @@ import com.soulfiremc.server.util.RandomUtil; import it.unimi.dsi.fastutil.PriorityQueue; import it.unimi.dsi.fastutil.objects.ObjectHeapPriorityQueue; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; import java.util.concurrent.ForkJoinPool; import java.util.concurrent.TimeUnit; import java.util.function.Function; @@ -30,7 +28,8 @@ @RequiredArgsConstructor public class SoulFireScheduler { - private final ExecutorService managementExecutor = Executors.newVirtualThreadPerTaskExecutor(); + private static final Thread.Builder.OfVirtual managementThreadBuilder = Thread.ofVirtual() + .name("SoulFireScheduler-Management-", 0); private final PriorityQueue executionQueue = new ObjectHeapPriorityQueue<>(); private final ForkJoinPool mainThreadExecutor; private final Logger logger; @@ -48,7 +47,7 @@ public SoulFireScheduler(Logger logger, Function runnableWra this.logger = logger; this.runnableWrapper = runnableWrapper; - this.managementExecutor.execute(this::managementTask); + managementThreadBuilder.start(this::managementTask); } @SuppressWarnings("BusyWait") @@ -65,7 +64,7 @@ public void managementTask() { Thread.sleep(1); } } catch (InterruptedException e) { - logger.error("Error in executor", e); + logger.info("Management thread interrupted"); } } @@ -122,7 +121,6 @@ public void scheduleWithRandomDelay(Runnable command, long minDelay, long maxDel public void shutdown() { shutdown = true; - managementExecutor.shutdown(); mainThreadExecutor.shutdown(); }