From 0d900784beeed22986bb6f717295e3efb57ba413 Mon Sep 17 00:00:00 2001 From: extio-de Date: Sun, 4 Oct 2026 14:36:04 +0200 Subject: [PATCH] fix(EventExecutor, ModuleExecutorImpl): replace virtual thread executor with fixed thread pool; Virtual threads do not appear in ThreadDumps, which makes debugging concurrency related issues harder --- src/main/java/de/extio/game_engine/event/EventExecutor.java | 4 ++-- .../java/de/extio/game_engine/module/ModuleExecutorImpl.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/de/extio/game_engine/event/EventExecutor.java b/src/main/java/de/extio/game_engine/event/EventExecutor.java index 504bbfc..7abfa2e 100644 --- a/src/main/java/de/extio/game_engine/event/EventExecutor.java +++ b/src/main/java/de/extio/game_engine/event/EventExecutor.java @@ -3,8 +3,8 @@ package de.extio.game_engine.event; import java.util.ArrayList; import java.util.List; import java.util.NoSuchElementException; -import java.util.concurrent.Callable; import java.util.concurrent.BlockingQueue; +import java.util.concurrent.Callable; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.LinkedBlockingQueue; @@ -16,7 +16,7 @@ import org.slf4j.LoggerFactory; public class EventExecutor { private static final Logger LOGGER = LoggerFactory.getLogger(EventExecutor.class); - private static final ExecutorService EXECUTOR = Executors.newVirtualThreadPerTaskExecutor(); + private static final ExecutorService EXECUTOR = Executors.newFixedThreadPool(4); //Executors.newVirtualThreadPerTaskExecutor(); private final BlockingQueue eventQueue = new LinkedBlockingQueue<>(); diff --git a/src/main/java/de/extio/game_engine/module/ModuleExecutorImpl.java b/src/main/java/de/extio/game_engine/module/ModuleExecutorImpl.java index b961a7b..fff9b9f 100644 --- a/src/main/java/de/extio/game_engine/module/ModuleExecutorImpl.java +++ b/src/main/java/de/extio/game_engine/module/ModuleExecutorImpl.java @@ -14,7 +14,7 @@ import org.slf4j.LoggerFactory; public class ModuleExecutorImpl implements ModuleExecutor { private static final Logger LOGGER = LoggerFactory.getLogger(ModuleExecutorImpl.class); - private static final ExecutorService EXECUTOR = Executors.newVirtualThreadPerTaskExecutor(); + private static final ExecutorService EXECUTOR = Executors.newFixedThreadPool(4); // Executors.newVirtualThreadPerTaskExecutor(); private final ModuleService moduleManager;