diff --git a/common/common-micro-kit/src/main/java/com/iohao/game/common/kit/concurrent/TaskKit.java b/common/common-micro-kit/src/main/java/com/iohao/game/common/kit/concurrent/TaskKit.java index 5509157a4..6151ad1f3 100644 --- a/common/common-micro-kit/src/main/java/com/iohao/game/common/kit/concurrent/TaskKit.java +++ b/common/common-micro-kit/src/main/java/com/iohao/game/common/kit/concurrent/TaskKit.java @@ -25,10 +25,12 @@ import com.iohao.game.common.kit.collect.SetMultiMap; import io.netty.util.HashedWheelTimer; import io.netty.util.Timeout; +import io.netty.util.Timer; import io.netty.util.TimerTask; import lombok.Getter; import lombok.experimental.UtilityClass; +import java.util.Objects; import java.util.Set; import java.util.concurrent.*; import java.util.function.Supplier; @@ -142,7 +144,7 @@ @UtilityClass public class TaskKit { /** 执行一些没有 io 操作的逻辑 */ - private final HashedWheelTimer wheelTimer = new HashedWheelTimer(); + private Timer wheelTimer = new HashedWheelTimer(); /** 内置的 cacheExecutor 执行器 */ @Getter final ExecutorService cacheExecutor = ExecutorKit.newFixedThreadPool(RuntimeKit.availableProcessors2n, "ioGameThread-"); @@ -154,6 +156,24 @@ public class TaskKit { record TickTimeUnit(long tick, TimeUnit timeUnit) { } + /** + * set HashedWheelTimer + *
{@code + * TaskKit.setTimer(new HashedWheelTimer(17, TimeUnit.MILLISECONDS)); + * } + *+ * + * @param timer Timer + * @since 21.23 + */ + public void setTimer(Timer timer) { + Objects.requireNonNull(timer); + + var oldTimer = wheelTimer; + wheelTimer = timer; + oldTimer.stop(); + } + /** * 使用其他线程执行任务 *