diff --git a/src/main/java/com/seibel/lod/builders/LodNodeBufferBuilder.java b/src/main/java/com/seibel/lod/builders/LodNodeBufferBuilder.java index d097ed446..d5f217c67 100644 --- a/src/main/java/com/seibel/lod/builders/LodNodeBufferBuilder.java +++ b/src/main/java/com/seibel/lod/builders/LodNodeBufferBuilder.java @@ -33,6 +33,7 @@ import com.seibel.lod.objects.LodQuadTreeNode; import com.seibel.lod.objects.NearFarVbos; import com.seibel.lod.proxy.ClientProxy; import com.seibel.lod.render.LodNodeRenderer; +import com.seibel.lod.util.LodThreadFactory; import com.seibel.lod.util.LodUtil; import net.minecraft.client.Minecraft; @@ -54,7 +55,7 @@ public class LodNodeBufferBuilder private Minecraft mc; /** This holds the thread used to generate new LODs off the main thread. */ - private ExecutorService genThread = Executors.newSingleThreadExecutor(); + private ExecutorService genThread = Executors.newSingleThreadExecutor(new LodThreadFactory(this.getClass().getSimpleName())); private LodNodeBuilder LodQuadTreeNodeBuilder; @@ -382,7 +383,7 @@ public class LodNodeBufferBuilder long buildTime = endTime - startTime; if (buildTime > 1000) { - ClientProxy.LOGGER.info("\"LodNodeBufferBuilder.generateLodBuffersAsync\" took " + buildTime + " milliseconds, consider lowering the render quality."); +// ClientProxy.LOGGER.info("\"LodNodeBufferBuilder.generateLodBuffersAsync\" took " + buildTime + " milliseconds, consider lowering the render quality."); } // mark that the buildable buffers as ready to swap diff --git a/src/main/java/com/seibel/lod/builders/LodNodeBuilder.java b/src/main/java/com/seibel/lod/builders/LodNodeBuilder.java index 590d85a42..56514e296 100644 --- a/src/main/java/com/seibel/lod/builders/LodNodeBuilder.java +++ b/src/main/java/com/seibel/lod/builders/LodNodeBuilder.java @@ -30,6 +30,7 @@ import com.seibel.lod.objects.LodDataPoint; import com.seibel.lod.objects.LodQuadTreeDimension; import com.seibel.lod.objects.LodQuadTreeNode; import com.seibel.lod.objects.LodQuadTreeWorld; +import com.seibel.lod.util.LodThreadFactory; import com.seibel.lod.util.LodUtil; import net.minecraft.block.AbstractPlantBlock; @@ -57,7 +58,7 @@ import net.minecraft.world.gen.Heightmap; */ public class LodNodeBuilder { - private ExecutorService lodGenThreadPool = Executors.newSingleThreadExecutor(); + private ExecutorService lodGenThreadPool = Executors.newSingleThreadExecutor(new LodThreadFactory(this.getClass().getSimpleName())); public static final int CHUNK_DATA_WIDTH = LodUtil.CHUNK_WIDTH; public static final int CHUNK_SECTION_HEIGHT = CHUNK_DATA_WIDTH; diff --git a/src/main/java/com/seibel/lod/builders/worldGeneration/LodNodeGenWorker.java b/src/main/java/com/seibel/lod/builders/worldGeneration/LodNodeGenWorker.java index 0fc1afc7d..6067ec50d 100644 --- a/src/main/java/com/seibel/lod/builders/worldGeneration/LodNodeGenWorker.java +++ b/src/main/java/com/seibel/lod/builders/worldGeneration/LodNodeGenWorker.java @@ -35,6 +35,7 @@ import com.seibel.lod.objects.LodQuadTreeDimension; import com.seibel.lod.objects.LodQuadTreeNode; import com.seibel.lod.proxy.ClientProxy; import com.seibel.lod.render.LodNodeRenderer; +import com.seibel.lod.util.LodThreadFactory; import com.seibel.lod.util.LodUtil; import net.minecraft.block.Block; @@ -74,7 +75,7 @@ import net.minecraftforge.common.WorldWorkerManager.IWorker; */ public class LodNodeGenWorker implements IWorker { - public static ExecutorService genThreads = Executors.newFixedThreadPool(LodConfig.CLIENT.numberOfWorldGenerationThreads.get()); + public static ExecutorService genThreads = Executors.newFixedThreadPool(LodConfig.CLIENT.numberOfWorldGenerationThreads.get(), new LodThreadFactory(LodNodeGenWorker.class.getSimpleName())); private boolean threadStarted = false; private LodChunkGenThread thread; @@ -639,7 +640,7 @@ public class LodNodeGenWorker implements IWorker { genThreads.shutdownNow(); } - genThreads = Executors.newFixedThreadPool(LodConfig.CLIENT.numberOfWorldGenerationThreads.get()); + genThreads = Executors.newFixedThreadPool(LodConfig.CLIENT.numberOfWorldGenerationThreads.get(), new LodThreadFactory(LodNodeGenWorker.class.getSimpleName())); } diff --git a/src/main/java/com/seibel/lod/handlers/LodQuadTreeDimensionFileHandler.java b/src/main/java/com/seibel/lod/handlers/LodQuadTreeDimensionFileHandler.java index f2a9b2320..0a43ae425 100644 --- a/src/main/java/com/seibel/lod/handlers/LodQuadTreeDimensionFileHandler.java +++ b/src/main/java/com/seibel/lod/handlers/LodQuadTreeDimensionFileHandler.java @@ -35,6 +35,7 @@ import com.seibel.lod.objects.LodQuadTreeDimension; import com.seibel.lod.objects.LodQuadTreeNode; import com.seibel.lod.objects.RegionPos; import com.seibel.lod.proxy.ClientProxy; +import com.seibel.lod.util.LodThreadFactory; /** * This object handles creating LodRegions @@ -76,7 +77,7 @@ public class LodQuadTreeDimensionFileHandler /** Allow saving asynchronously, but never try to save multiple regions * at a time */ - private ExecutorService fileWritingThreadPool = Executors.newSingleThreadExecutor(); + private ExecutorService fileWritingThreadPool = Executors.newSingleThreadExecutor(new LodThreadFactory(this.getClass().getSimpleName())); public LodQuadTreeDimensionFileHandler(File newSaveFolder, LodQuadTreeDimension newLoadedDimension) diff --git a/src/main/java/com/seibel/lod/util/LodThreadFactory.java b/src/main/java/com/seibel/lod/util/LodThreadFactory.java new file mode 100644 index 000000000..d55ff3f5d --- /dev/null +++ b/src/main/java/com/seibel/lod/util/LodThreadFactory.java @@ -0,0 +1,28 @@ +package com.seibel.lod.util; + +import java.util.concurrent.ThreadFactory; + +/** + * Just a simple ThreadFactory to name ExecutorService + * threads, which can be helpful when debugging. + * + * @author James Seibel + * @version 8-15-2021 + */ +public class LodThreadFactory implements ThreadFactory +{ + public String threadName; + + + public LodThreadFactory(String newThreadName) + { + threadName = newThreadName + " Thread"; + } + + @Override + public Thread newThread(Runnable r) + { + return new Thread(r, threadName); + } + +}