Move threading from LodUtil to ThreadUtil
This commit is contained in:
+2
-2
@@ -34,8 +34,8 @@ import static com.seibel.lod.core.render.glObject.GLProxy.GL_LOGGER;
|
||||
public class ColumnRenderBuffer extends AbstractRenderBuffer
|
||||
{
|
||||
//TODO: Make the pool change thread count after the config value is changed
|
||||
public static final ExecutorService BUFFER_BUILDERS = LodUtil.makeThreadPool(Config.Client.Advanced.Threading.numberOfBufferBuilderThreads.get(), "BufferBuilder");
|
||||
public static final ExecutorService BUFFER_UPLOADER = LodUtil.makeSingleThreadPool("ColumnBufferUploader");
|
||||
public static final ExecutorService BUFFER_BUILDERS = ThreadUtil.makeThreadPool(Config.Client.Advanced.Threading.numberOfBufferBuilderThreads.get(), "BufferBuilder");
|
||||
public static final ExecutorService BUFFER_UPLOADER = ThreadUtil.makeSingleThreadPool("ColumnBufferUploader");
|
||||
public static final int MAX_CONCURRENT_CALL = 8;
|
||||
|
||||
public static final ConfigBasedLogger EVENT_LOGGER = new ConfigBasedLogger(LogManager.getLogger(),
|
||||
|
||||
+1
-1
@@ -35,7 +35,7 @@ public class ChunkToLodBuilder
|
||||
}
|
||||
private final ConcurrentHashMap<DhChunkPos, IChunkWrapper> latestChunkToBuild = new ConcurrentHashMap<>();
|
||||
private final ConcurrentLinkedDeque<Task> taskToBuild = new ConcurrentLinkedDeque<>();
|
||||
private final ExecutorService executor = LodUtil.makeThreadPool(THREAD_COUNT, ChunkToLodBuilder.class);
|
||||
private final ExecutorService executor = ThreadUtil.makeThreadPool(THREAD_COUNT, ChunkToLodBuilder.class);
|
||||
private final AtomicInteger runningCount = new AtomicInteger(0);
|
||||
|
||||
|
||||
|
||||
+2
-2
@@ -6,7 +6,7 @@ import com.seibel.lod.core.dataObjects.render.ColumnRenderSource;
|
||||
import com.seibel.lod.core.dependencyInjection.SingletonInjector;
|
||||
import com.seibel.lod.core.level.IDhClientLevel;
|
||||
import com.seibel.lod.core.logging.DhLoggerBuilder;
|
||||
import com.seibel.lod.core.util.LodUtil;
|
||||
import com.seibel.lod.core.util.ThreadUtil;
|
||||
import com.seibel.lod.core.wrapperInterfaces.minecraft.IMinecraftClientWrapper;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
@@ -73,7 +73,7 @@ public class DataRenderTransformer
|
||||
if (transformerThreads == null || transformerThreads.isTerminated())
|
||||
{
|
||||
LOGGER.info("Starting "+DataRenderTransformer.class.getSimpleName());
|
||||
transformerThreads = LodUtil.makeThreadPool(4, "Data/Render Transformer");
|
||||
transformerThreads = ThreadUtil.makeThreadPool(4, "Data/Render Transformer");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@ import com.seibel.lod.core.pos.DhLodPos;
|
||||
import com.seibel.lod.core.pos.DhSectionPos;
|
||||
import com.seibel.lod.core.logging.DhLoggerBuilder;
|
||||
import com.seibel.lod.core.util.LodUtil;
|
||||
import com.seibel.lod.core.util.ThreadUtil;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
import java.io.File;
|
||||
@@ -31,7 +32,7 @@ public class FullDataFileHandler implements IFullDataSourceProvider
|
||||
{
|
||||
// Note: Single main thread only for now. May make it multi-thread later, depending on the usage.
|
||||
private static final Logger LOGGER = DhLoggerBuilder.getLogger();
|
||||
final ExecutorService fileReaderThread = LodUtil.makeThreadPool(4, "FileReaderThread");
|
||||
final ExecutorService fileReaderThread = ThreadUtil.makeThreadPool(4, "FileReaderThread");
|
||||
final ConcurrentHashMap<DhSectionPos, FullDataMetaFile> files = new ConcurrentHashMap<>();
|
||||
final IDhLevel level;
|
||||
final File saveDir;
|
||||
|
||||
@@ -10,6 +10,7 @@ import com.seibel.lod.core.level.IDhClientLevel;
|
||||
import com.seibel.lod.core.pos.DhLodPos;
|
||||
import com.seibel.lod.core.pos.DhSectionPos;
|
||||
import com.seibel.lod.core.util.FileUtil;
|
||||
import com.seibel.lod.core.util.ThreadUtil;
|
||||
import com.seibel.lod.core.util.objects.UncheckedInterruptedException;
|
||||
import com.seibel.lod.core.config.Config;
|
||||
import com.seibel.lod.core.logging.DhLoggerBuilder;
|
||||
@@ -31,7 +32,7 @@ public class RenderSourceFileHandler implements ILodRenderSourceProvider
|
||||
|
||||
private static final Logger LOGGER = DhLoggerBuilder.getLogger();
|
||||
|
||||
private final ExecutorService renderCacheThread = LodUtil.makeSingleThreadPool("RenderCacheThread");
|
||||
private final ExecutorService renderCacheThread = ThreadUtil.makeSingleThreadPool("RenderCacheThread");
|
||||
private final ConcurrentHashMap<DhSectionPos, RenderMetaDataFile> filesBySectionPos = new ConcurrentHashMap<>();
|
||||
|
||||
private final IDhClientLevel level;
|
||||
|
||||
+2
-1
@@ -16,6 +16,7 @@ import com.seibel.lod.core.logging.ConfigBasedLogger;
|
||||
import com.seibel.lod.core.pos.DhChunkPos;
|
||||
import com.seibel.lod.core.pos.DhSectionPos;
|
||||
import com.seibel.lod.core.util.LodUtil;
|
||||
import com.seibel.lod.core.util.ThreadUtil;
|
||||
import com.seibel.lod.core.wrapperInterfaces.chunk.IChunkWrapper;
|
||||
import com.seibel.lod.core.wrapperInterfaces.minecraft.IMinecraftClientWrapper;
|
||||
import com.seibel.lod.core.wrapperInterfaces.world.IClientLevelWrapper;
|
||||
@@ -43,7 +44,7 @@ public class SubDimensionLevelMatcher implements AutoCloseable
|
||||
public static final ConfigBasedLogger LOGGER = new ConfigBasedLogger(LogManager.getLogger(),
|
||||
() -> Config.Client.Advanced.Debugging.DebugSwitch.logFileSubDimEvent.get());
|
||||
|
||||
private final ExecutorService matcherThread = LodUtil.makeSingleThreadPool("Level-To-File-Matcher");
|
||||
private final ExecutorService matcherThread = ThreadUtil.makeSingleThreadPool("Level-To-File-Matcher");
|
||||
|
||||
private SubDimensionPlayerData playerData = null;
|
||||
private SubDimensionPlayerData firstSeenPlayerData = null;
|
||||
|
||||
@@ -20,22 +20,16 @@
|
||||
package com.seibel.lod.core.util;
|
||||
|
||||
import java.util.Iterator;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
|
||||
import com.google.common.net.PercentEscaper;
|
||||
import com.seibel.lod.core.config.Config;
|
||||
import com.seibel.lod.api.enums.config.EServerFolderNameMode;
|
||||
import com.seibel.lod.api.enums.config.EVanillaOverdraw;
|
||||
import com.seibel.lod.core.dependencyInjection.SingletonInjector;
|
||||
import com.seibel.lod.core.logging.DhLoggerBuilder;
|
||||
import com.seibel.lod.core.pos.DhChunkPos;
|
||||
import com.seibel.lod.core.util.objects.ParsedIp;
|
||||
import com.seibel.lod.core.pos.Pos2D;
|
||||
import com.seibel.lod.core.render.vertexFormat.DefaultLodVertexFormats;
|
||||
import com.seibel.lod.core.render.vertexFormat.LodVertexFormat;
|
||||
import com.seibel.lod.core.util.gridList.EdgeDistanceBooleanGrid;
|
||||
import com.seibel.lod.core.util.objects.LodThreadFactory;
|
||||
import com.seibel.lod.core.wrapperInterfaces.minecraft.IMinecraftRenderWrapper;
|
||||
import com.seibel.lod.core.wrapperInterfaces.minecraft.IMinecraftClientWrapper;
|
||||
import com.seibel.lod.core.wrapperInterfaces.world.IDimensionTypeWrapper;
|
||||
@@ -301,31 +295,6 @@ public class LodUtil
|
||||
public static void assertToDo() {
|
||||
throw new AssertFailureException("TODO!");
|
||||
}
|
||||
|
||||
public static ExecutorService makeSingleThreadPool(String name, int relativePriority) {
|
||||
return Executors.newFixedThreadPool(1, new LodThreadFactory(name, Thread.NORM_PRIORITY+relativePriority));
|
||||
}
|
||||
public static ExecutorService makeSingleThreadPool(Class<?> clazz, int relativePriority) {
|
||||
return makeSingleThreadPool(clazz.getSimpleName(), relativePriority);
|
||||
}
|
||||
public static ExecutorService makeSingleThreadPool(String name) {
|
||||
return makeSingleThreadPool(name, 0);
|
||||
}
|
||||
public static ExecutorService makeSingleThreadPool(Class<?> clazz) {
|
||||
return makeSingleThreadPool(clazz.getSimpleName(), 0);
|
||||
}
|
||||
public static ExecutorService makeThreadPool(int poolSize, String name, int relativePriority) {
|
||||
return Executors.newFixedThreadPool(poolSize, new LodThreadFactory(name, Thread.NORM_PRIORITY+relativePriority));
|
||||
}
|
||||
public static ExecutorService makeThreadPool(int poolSize, Class<?> clazz, int relativePriority) {
|
||||
return makeThreadPool(poolSize, clazz.getSimpleName(), relativePriority);
|
||||
}
|
||||
public static ExecutorService makeThreadPool(int poolSize, String name) {
|
||||
return makeThreadPool(poolSize, name, 0);
|
||||
}
|
||||
public static ExecutorService makeThreadPool(int poolSize, Class<?> clazz) {
|
||||
return makeThreadPool(poolSize, clazz.getSimpleName(), 0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
package com.seibel.lod.core.util;
|
||||
|
||||
import com.seibel.lod.core.util.objects.LodThreadFactory;
|
||||
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
|
||||
public class ThreadUtil
|
||||
{
|
||||
public static int MINIMUM_RELATIVE_PRIORITY = -5;
|
||||
public static int DEFAULT_RELATIVE_PRIORITY = 0;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// create thread pool //
|
||||
|
||||
public static ExecutorService makeThreadPool(int poolSize, String name, int relativePriority)
|
||||
{
|
||||
return Executors.newFixedThreadPool(poolSize, new LodThreadFactory(name, Thread.NORM_PRIORITY+relativePriority));
|
||||
}
|
||||
|
||||
public static ExecutorService makeThreadPool(int poolSize, Class<?> clazz, int relativePriority)
|
||||
{
|
||||
return makeThreadPool(poolSize, clazz.getSimpleName(), relativePriority);
|
||||
}
|
||||
public static ExecutorService makeThreadPool(int poolSize, String name)
|
||||
{
|
||||
return makeThreadPool(poolSize, name, 0);
|
||||
}
|
||||
public static ExecutorService makeThreadPool(int poolSize, Class<?> clazz)
|
||||
{
|
||||
return makeThreadPool(poolSize, clazz.getSimpleName(), 0);
|
||||
}
|
||||
|
||||
|
||||
// create single thread pool //
|
||||
|
||||
public static ExecutorService makeSingleThreadPool(String name, int relativePriority)
|
||||
{
|
||||
return makeThreadPool(1, name, Thread.NORM_PRIORITY+relativePriority);
|
||||
}
|
||||
public static ExecutorService makeSingleThreadPool(Class<?> clazz, int relativePriority)
|
||||
{
|
||||
return makeThreadPool(1, clazz.getSimpleName(), relativePriority);
|
||||
}
|
||||
public static ExecutorService makeSingleThreadPool(String name)
|
||||
{
|
||||
return makeThreadPool(1, name, 0);
|
||||
}
|
||||
public static ExecutorService makeSingleThreadPool(Class<?> clazz)
|
||||
{
|
||||
return makeThreadPool(1, clazz.getSimpleName(), 0);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -4,6 +4,7 @@ import com.seibel.lod.core.level.DhClientServerLevel;
|
||||
import com.seibel.lod.core.level.IDhLevel;
|
||||
import com.seibel.lod.core.file.structure.LocalSaveStructure;
|
||||
import com.seibel.lod.core.logging.f3.F3Screen;
|
||||
import com.seibel.lod.core.util.ThreadUtil;
|
||||
import com.seibel.lod.core.util.objects.EventLoop;
|
||||
import com.seibel.lod.core.util.LodUtil;
|
||||
import com.seibel.lod.core.wrapperInterfaces.world.IClientLevelWrapper;
|
||||
@@ -22,7 +23,7 @@ public class DhClientServerWorld extends AbstractDhWorld implements IDhClientWor
|
||||
private final HashSet<DhClientServerLevel> dhLevels;
|
||||
public final LocalSaveStructure saveStructure;
|
||||
|
||||
public ExecutorService dhTickerThread = LodUtil.makeSingleThreadPool("DHTickerThread", 2);
|
||||
public ExecutorService dhTickerThread = ThreadUtil.makeSingleThreadPool("DHTickerThread", 2);
|
||||
public EventLoop eventLoop = new EventLoop(this.dhTickerThread, this::_clientTick); //TODO: Rate-limit the loop
|
||||
|
||||
public F3Screen.DynamicMessage f3Message;
|
||||
|
||||
@@ -6,6 +6,7 @@ import com.seibel.lod.core.file.structure.ClientOnlySaveStructure;
|
||||
import com.seibel.lod.core.config.Config;
|
||||
import com.seibel.lod.core.level.states.ClientRenderState;
|
||||
import com.seibel.lod.core.util.DetailDistanceUtil;
|
||||
import com.seibel.lod.core.util.ThreadUtil;
|
||||
import com.seibel.lod.core.util.objects.EventLoop;
|
||||
import com.seibel.lod.core.util.LodUtil;
|
||||
import com.seibel.lod.core.wrapperInterfaces.world.IClientLevelWrapper;
|
||||
@@ -22,7 +23,7 @@ public class DhClientWorld extends AbstractDhWorld implements IDhClientWorld
|
||||
private final HashMap<IClientLevelWrapper, DhClientLevel> levels;
|
||||
public final ClientOnlySaveStructure saveStructure;
|
||||
|
||||
public ExecutorService dhTickerThread = LodUtil.makeSingleThreadPool("DHTickerThread", 2);
|
||||
public ExecutorService dhTickerThread = ThreadUtil.makeSingleThreadPool("DHTickerThread", 2);
|
||||
public EventLoop eventLoop = new EventLoop(this.dhTickerThread, this::_clientTick);
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user