From c74ca0591216cf54444a7f68da98d641da3ef20f Mon Sep 17 00:00:00 2001 From: NONPLAYT <76615486+NONPLAYT@users.noreply.github.com> Date: Sun, 14 Dec 2025 15:11:13 +0300 Subject: [PATCH] fix ExecutorShutdown error, closes #44 --- .../main/java/org/bxteam/divinemc/async/AsyncChunkSend.java | 4 ++-- .../bxteam/divinemc/async/pathfinding/AsyncPathProcessor.java | 4 ++-- .../bxteam/divinemc/async/tracking/MultithreadedTracker.java | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/divinemc-server/src/main/java/org/bxteam/divinemc/async/AsyncChunkSend.java b/divinemc-server/src/main/java/org/bxteam/divinemc/async/AsyncChunkSend.java index bb2e435..7b0f78c 100644 --- a/divinemc-server/src/main/java/org/bxteam/divinemc/async/AsyncChunkSend.java +++ b/divinemc-server/src/main/java/org/bxteam/divinemc/async/AsyncChunkSend.java @@ -9,12 +9,12 @@ import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; public class AsyncChunkSend { - public static final ExecutorService POOL = new ThreadPoolExecutor( + public static final ExecutorService POOL = DivineConfig.AsyncCategory.asyncChunkSendingEnabled ? new ThreadPoolExecutor( 1, DivineConfig.AsyncCategory.asyncChunkSendingMaxThreads, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>(), new NamedAgnosticThreadFactory<>("Async Chunk Sending", AsyncChunkSendThread::new, Thread.NORM_PRIORITY), new ThreadPoolExecutor.CallerRunsPolicy() - ); + ) : null; public static class AsyncChunkSendThread extends Thread { protected AsyncChunkSendThread(ThreadGroup group, Runnable task, String name) { diff --git a/divinemc-server/src/main/java/org/bxteam/divinemc/async/pathfinding/AsyncPathProcessor.java b/divinemc-server/src/main/java/org/bxteam/divinemc/async/pathfinding/AsyncPathProcessor.java index 938182f..93e2e24 100644 --- a/divinemc-server/src/main/java/org/bxteam/divinemc/async/pathfinding/AsyncPathProcessor.java +++ b/divinemc-server/src/main/java/org/bxteam/divinemc/async/pathfinding/AsyncPathProcessor.java @@ -24,14 +24,14 @@ public class AsyncPathProcessor { private static final Logger LOGGER = LogManager.getLogger(THREAD_PREFIX); private static long lastWarnMillis = System.currentTimeMillis(); - public static final ThreadPoolExecutor PATH_PROCESSING_EXECUTOR = new ThreadPoolExecutor( + public static final ThreadPoolExecutor PATH_PROCESSING_EXECUTOR = DivineConfig.AsyncCategory.asyncPathfinding ? new ThreadPoolExecutor( 1, DivineConfig.AsyncCategory.asyncPathfindingMaxThreads, DivineConfig.AsyncCategory.asyncPathfindingKeepalive, TimeUnit.SECONDS, getQueueImpl(), new NamedAgnosticThreadFactory<>(THREAD_PREFIX, TickThread::new, Thread.NORM_PRIORITY - 2), new RejectedTaskHandler() - ); + ) : null; private static class RejectedTaskHandler implements RejectedExecutionHandler { @Override diff --git a/divinemc-server/src/main/java/org/bxteam/divinemc/async/tracking/MultithreadedTracker.java b/divinemc-server/src/main/java/org/bxteam/divinemc/async/tracking/MultithreadedTracker.java index e117753..d091cde 100644 --- a/divinemc-server/src/main/java/org/bxteam/divinemc/async/tracking/MultithreadedTracker.java +++ b/divinemc-server/src/main/java/org/bxteam/divinemc/async/tracking/MultithreadedTracker.java @@ -29,14 +29,14 @@ public class MultithreadedTracker { private static final Logger LOGGER = LogManager.getLogger(THREAD_PREFIX); private static long lastWarnMillis = System.currentTimeMillis(); - public static final ThreadPoolExecutor TRACKER_EXECUTOR = new ThreadPoolExecutor( + public static final ThreadPoolExecutor TRACKER_EXECUTOR = DivineConfig.AsyncCategory.multithreadedEnabled ? new ThreadPoolExecutor( getCorePoolSize(), getMaxPoolSize(), getKeepAliveTime(), TimeUnit.SECONDS, getQueueImpl(), getThreadFactory(), getRejectedPolicy() - ); + ) : null; public static void tick(ServerLevel level) { try {