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:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user