9
0
mirror of https://github.com/BX-Team/DivineMC.git synced 2025-12-22 16:29:23 +00:00

update async chunk sending

This commit is contained in:
NONPLAYT
2025-07-18 13:26:25 +03:00
parent aaf399b06c
commit 695e93a2f2
6 changed files with 210 additions and 78 deletions

View File

@@ -0,0 +1,24 @@
package org.bxteam.divinemc.async;
import org.bxteam.divinemc.util.NamedAgnosticThreadFactory;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
public class AsyncChunkSend {
public static final ExecutorService POOL = new ThreadPoolExecutor(
1, 1, 0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<>(),
new NamedAgnosticThreadFactory<>("Async Chunk Sending", AsyncChunkSendThread::new, Thread.NORM_PRIORITY),
new ThreadPoolExecutor.CallerRunsPolicy()
);
public static class AsyncChunkSendThread extends Thread {
protected AsyncChunkSendThread(ThreadGroup group, Runnable task, String name) {
super(group, task, name);
}
}
}

View File

@@ -1,11 +1,11 @@
package org.bxteam.divinemc.util;
package org.bxteam.divinemc.async;
import net.minecraft.server.MinecraftServer;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.bxteam.divinemc.async.pathfinding.AsyncPathProcessor;
import org.bxteam.divinemc.async.tracking.MultithreadedTracker;
import org.bxteam.divinemc.async.AsyncJoinHandler;
import java.util.concurrent.TimeUnit;
@SuppressWarnings("ConstantValue")
@@ -21,6 +21,15 @@ public class ExecutorShutdown {
} catch (InterruptedException ignored) { }
}
if (AsyncChunkSend.POOL != null) {
LOGGER.info("Shutting down async chunk send executor...");
AsyncChunkSend.POOL.shutdown();
try {
AsyncChunkSend.POOL.awaitTermination(10L, TimeUnit.SECONDS);
} catch (InterruptedException ignored) { }
}
if (MultithreadedTracker.TRACKER_EXECUTOR != null) {
LOGGER.info("Shutting down mob tracker executor...");
MultithreadedTracker.TRACKER_EXECUTOR.shutdown();

View File

@@ -1,12 +1,13 @@
package org.bxteam.divinemc.util;
import com.mojang.logging.LogUtils;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.atomic.AtomicInteger;
import org.bxteam.divinemc.spark.ThreadDumperRegistry;
import org.jetbrains.annotations.NotNull;
import org.slf4j.Logger;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.atomic.AtomicInteger;
public class NamedAgnosticThreadFactory<T extends Thread> implements ThreadFactory {
private static final Logger LOGGER = LogUtils.getLogger();
private final ThreadGroup group;