diff --git a/event/src/main/java/com/zfoo/event/manager/EventBus.java b/event/src/main/java/com/zfoo/event/manager/EventBus.java index 940c57ed..c5be0d33 100644 --- a/event/src/main/java/com/zfoo/event/manager/EventBus.java +++ b/event/src/main/java/com/zfoo/event/manager/EventBus.java @@ -48,7 +48,7 @@ public abstract class EventBus { private static final ExecutorService[] executors = new ExecutorService[EXECUTORS_SIZE]; - private static final CopyOnWriteHashMapLongObject threadMap = new CopyOnWriteHashMapLongObject<>(); + private static final CopyOnWriteHashMapLongObject threadMap = new CopyOnWriteHashMapLongObject<>(EXECUTORS_SIZE); private static final Map, List> receiverMap = new HashMap<>(); diff --git a/net/src/main/java/com/zfoo/net/task/TaskBus.java b/net/src/main/java/com/zfoo/net/task/TaskBus.java index 4fa258c8..c4f88993 100644 --- a/net/src/main/java/com/zfoo/net/task/TaskBus.java +++ b/net/src/main/java/com/zfoo/net/task/TaskBus.java @@ -43,7 +43,7 @@ public final class TaskBus { private static final Logger logger = LoggerFactory.getLogger(TaskBus.class); - // 线程池的大小 + // 线程池的大小,也可以通过provider thread配置指定 public static final int EXECUTOR_SIZE; private static final ITaskDispatch taskDispatch; @@ -54,8 +54,6 @@ public final class TaskBus { */ private static final ExecutorService[] executors; - private static final CopyOnWriteHashMapLongObject threadMap = new CopyOnWriteHashMapLongObject<>(); - static { var localConfig = NetContext.getConfigManager().getLocalConfig(); var providerConfig = localConfig.getProvider(); @@ -74,6 +72,8 @@ public final class TaskBus { } } + private static final CopyOnWriteHashMapLongObject threadMap = new CopyOnWriteHashMapLongObject<>(EXECUTOR_SIZE); + public static class TaskThreadFactory implements ThreadFactory { private final int poolNumber; private final AtomicInteger threadNumber = new AtomicInteger(1); diff --git a/protocol/src/main/java/com/zfoo/protocol/collection/concurrent/CopyOnWriteHashMapLongObject.java b/protocol/src/main/java/com/zfoo/protocol/collection/concurrent/CopyOnWriteHashMapLongObject.java index 7ceaf9ed..f0f09cc7 100644 --- a/protocol/src/main/java/com/zfoo/protocol/collection/concurrent/CopyOnWriteHashMapLongObject.java +++ b/protocol/src/main/java/com/zfoo/protocol/collection/concurrent/CopyOnWriteHashMapLongObject.java @@ -26,7 +26,15 @@ import java.util.concurrent.locks.ReentrantLock; public class CopyOnWriteHashMapLongObject implements Map { private final ReentrantLock lock = new ReentrantLock(); - private volatile LongObjectHashMap map = new LongObjectHashMap<>(); + private volatile LongObjectHashMap map; + + public CopyOnWriteHashMapLongObject() { + map = new LongObjectHashMap<>(); + } + + public CopyOnWriteHashMapLongObject(int initialCapacity) { + map = new LongObjectHashMap<>(initialCapacity); + } private LongObjectHashMap newCopyMap() { var newMap = new LongObjectHashMap();