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 dcb79d38..940c57ed 100644 --- a/event/src/main/java/com/zfoo/event/manager/EventBus.java +++ b/event/src/main/java/com/zfoo/event/manager/EventBus.java @@ -16,6 +16,7 @@ package com.zfoo.event.manager; import com.zfoo.event.model.event.IEvent; import com.zfoo.event.model.vo.IEventReceiver; import com.zfoo.protocol.collection.CollectionUtils; +import com.zfoo.protocol.collection.concurrent.CopyOnWriteHashMapLongObject; import com.zfoo.protocol.util.AssertionUtils; import com.zfoo.protocol.util.StringUtils; import com.zfoo.util.SafeRunnable; @@ -47,7 +48,7 @@ public abstract class EventBus { private static final ExecutorService[] executors = new ExecutorService[EXECUTORS_SIZE]; - private static final Map threadMap = new ConcurrentHashMap<>(); + private static final CopyOnWriteHashMapLongObject threadMap = new CopyOnWriteHashMapLongObject<>(); private static final Map, List> receiverMap = new HashMap<>(); @@ -151,7 +152,7 @@ public abstract class EventBus { } public static Executor threadExecutor(long currentThreadId) { - return threadMap.get(currentThreadId); + return threadMap.getPrimitive(currentThreadId); } } 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 99301a5e..4fa258c8 100644 --- a/net/src/main/java/com/zfoo/net/task/TaskBus.java +++ b/net/src/main/java/com/zfoo/net/task/TaskBus.java @@ -18,6 +18,7 @@ import com.zfoo.net.NetContext; import com.zfoo.net.task.dispatcher.AbstractTaskDispatch; import com.zfoo.net.task.dispatcher.ITaskDispatch; import com.zfoo.net.task.model.PacketReceiverTask; +import com.zfoo.protocol.collection.concurrent.CopyOnWriteHashMapLongObject; import com.zfoo.protocol.util.AssertionUtils; import com.zfoo.protocol.util.StringUtils; import com.zfoo.scheduler.manager.SchedulerBus; @@ -53,7 +54,7 @@ public final class TaskBus { */ private static final ExecutorService[] executors; - private static final Map threadMap = new ConcurrentHashMap<>(); + private static final CopyOnWriteHashMapLongObject threadMap = new CopyOnWriteHashMapLongObject<>(); static { var localConfig = NetContext.getConfigManager().getLocalConfig(); @@ -131,7 +132,7 @@ public final class TaskBus { // 在task,event,scheduler线程执行的异步请求,请求成功过后依然在相同的线程执行回调任务 public static Executor currentThreadExecutor() { var threadId = Thread.currentThread().getId(); - var taskExecutor = threadMap.get(threadId); + var taskExecutor = threadMap.getPrimitive(threadId); if (taskExecutor != null) { return taskExecutor; }