From 3f1fd98f423f124dfa134cc16931a9bafdeacd61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E7=8E=89=E4=B8=9C?= <129883742+liyudong2018@users.noreply.github.com> Date: Thu, 18 Sep 2025 11:38:15 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E7=9B=B8=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/hivekion/room/RoomManager.java | 12 ++++++++++-- src/main/java/com/hivekion/room/bean/Room.java | 13 ++++++------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/hivekion/room/RoomManager.java b/src/main/java/com/hivekion/room/RoomManager.java index 2f583d8..14137e8 100644 --- a/src/main/java/com/hivekion/room/RoomManager.java +++ b/src/main/java/com/hivekion/room/RoomManager.java @@ -19,8 +19,8 @@ public class RoomManager { private static final Map roomsMap = new ConcurrentHashMap<>(); - public static void startRoom(String id, Scenario scenario,long time) { - Room room = new Room(id,scenario); + public static void startRoom(String id, Scenario scenario, long time) { + Room room = new Room(id, scenario); roomsMap.put(id, room); room.start(time); } @@ -52,4 +52,12 @@ public class RoomManager { room.addAction(time, action); } } + + public static long getRoomDuringTime(String id) { + Room room = roomsMap.get(id); + if (room != null) { + return room.getDuringTime(); + } + return 0; + } } diff --git a/src/main/java/com/hivekion/room/bean/Room.java b/src/main/java/com/hivekion/room/bean/Room.java index f2ef23b..f7200de 100644 --- a/src/main/java/com/hivekion/room/bean/Room.java +++ b/src/main/java/com/hivekion/room/bean/Room.java @@ -10,10 +10,8 @@ import com.hivekion.scenario.bean.ScenarioWsParam; import java.time.format.DateTimeFormatter; import java.util.HashMap; import java.util.Map; -import java.util.Map.Entry; import java.util.NavigableMap; import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentNavigableMap; import java.util.concurrent.ConcurrentSkipListMap; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -111,7 +109,12 @@ public class Room implements AutoCloseable { startTask(); } - + public long getDuringTime() { + return duringTime.get(); + } + public long getTotalTime() { + return totalTime.get(); + } // 启动定时任务 private void startTask() { @@ -134,10 +137,6 @@ public class Room implements AutoCloseable { }); }); - - // 全部执行后再清空 - - actions.clear(); } }, 0, 1, TimeUnit.SECONDS); From b8b67c1d3eb2d6c011c78f8c01cdc4a72d8100b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E7=8E=89=E4=B8=9C?= <129883742+liyudong2018@users.noreply.github.com> Date: Thu, 18 Sep 2025 11:41:46 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E7=9B=B8=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/hivekion/room/bean/AbtParentTask.java | 28 ++++--------------- .../hivekion/room/bean/BattleRootTask.java | 10 ++----- .../com/hivekion/room/bean/MoveRootTask.java | 10 ++++--- .../com/hivekion/room/bean/SupplierTask.java | 3 -- 4 files changed, 13 insertions(+), 38 deletions(-) diff --git a/src/main/java/com/hivekion/room/bean/AbtParentTask.java b/src/main/java/com/hivekion/room/bean/AbtParentTask.java index c9f8982..1b40ad7 100644 --- a/src/main/java/com/hivekion/room/bean/AbtParentTask.java +++ b/src/main/java/com/hivekion/room/bean/AbtParentTask.java @@ -27,16 +27,14 @@ import org.springframework.web.reactive.function.client.WebClient; public abstract class AbtParentTask implements TaskAction { - protected final AtomicLong duringTime = new AtomicLong(0); - protected final ScheduledExecutorService schedule = Executors.newScheduledThreadPool( - 1); - protected ScheduledFuture scheduledFuture; + + //任务数据 protected final ScenarioTask scenarioTask; protected final String roomId; protected WebClient webClient = WebClient.create(); - ThreadPoolExecutor executor = new ThreadPoolExecutor( + protected ThreadPoolExecutor executor = new ThreadPoolExecutor( 5, // 核心线程数 10, // 最大线程数 60L, // 空闲线程存活时间 @@ -52,20 +50,8 @@ public abstract class AbtParentTask implements TaskAction { } - protected void start() { - scheduledFuture = schedule.scheduleAtFixedRate(() -> { - ScenarioWsParam scenarioWsParam = Global.roomParamMap.get( - scenarioTask.getScenarioId() + "_" + roomId); - if (scenarioWsParam == null) { - duringTime.getAndSet(1); - } else { - duringTime.getAndSet(scenarioWsParam.getMag()); - } - }, 0, 1, TimeUnit.SECONDS); - } - protected abstract void finished(); protected abstract void setMag(int mag); @@ -85,13 +71,9 @@ public abstract class AbtParentTask implements TaskAction { return scenarioTask.getTaskType(); } - public void cancelAllTask() { - if (scheduledFuture != null) { - scheduledFuture.cancel(true); - } - } - protected abstract void business(); + + } // 自定义线程工厂 diff --git a/src/main/java/com/hivekion/room/bean/BattleRootTask.java b/src/main/java/com/hivekion/room/bean/BattleRootTask.java index e18d277..6f515c9 100644 --- a/src/main/java/com/hivekion/room/bean/BattleRootTask.java +++ b/src/main/java/com/hivekion/room/bean/BattleRootTask.java @@ -23,14 +23,8 @@ public class BattleRootTask extends AbtParentTask { public void doSomeThing() { //会知道想定ID, resourceId; } - //固定间隔执行 - @Override - protected void business() { - // Global.roomParamMap.get(scenarioTask.getScenarioId() + "," + this.roomId); 可以获取当前想定的步长 - //战斗需要消耗弹药 按时间消耗,30秒 - //人员消耗 - //可能会产生需求,保障需求 - } + + @Override diff --git a/src/main/java/com/hivekion/room/bean/MoveRootTask.java b/src/main/java/com/hivekion/room/bean/MoveRootTask.java index 317f49d..e4d60cb 100644 --- a/src/main/java/com/hivekion/room/bean/MoveRootTask.java +++ b/src/main/java/com/hivekion/room/bean/MoveRootTask.java @@ -11,6 +11,9 @@ import com.hivekion.room.func.TaskAction; import com.hivekion.scenario.entity.ScenarioTask; import java.util.Map; import java.util.TreeMap; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ScheduledFuture; import lombok.extern.slf4j.Slf4j; import org.springframework.core.env.Environment; @@ -26,7 +29,9 @@ import org.springframework.core.env.Environment; @Slf4j public class MoveRootTask extends AbtParentTask implements TaskAction { - + protected final ScheduledExecutorService schedule = Executors.newScheduledThreadPool( + 1); + protected ScheduledFuture scheduledFuture; private final double SPEED = 170; private double accumulatedDistance = 0; @@ -84,10 +89,7 @@ public class MoveRootTask extends AbtParentTask implements TaskAction { } - @Override - protected void business() { - } @Override diff --git a/src/main/java/com/hivekion/room/bean/SupplierTask.java b/src/main/java/com/hivekion/room/bean/SupplierTask.java index 666f1ae..2082824 100644 --- a/src/main/java/com/hivekion/room/bean/SupplierTask.java +++ b/src/main/java/com/hivekion/room/bean/SupplierTask.java @@ -28,10 +28,7 @@ public class SupplierTask extends AbtParentTask implements TaskAction { } - @Override - protected void business() { - } @Override From dc6f239a8d936e5a595172ca8569f2b21fe2eb41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E7=8E=89=E4=B8=9C?= <129883742+liyudong2018@users.noreply.github.com> Date: Thu, 18 Sep 2025 11:43:14 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E7=9B=B8=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/hivekion/room/bean/AbtParentTask.java | 7 ++++--- src/main/java/com/hivekion/room/bean/BattleRootTask.java | 8 -------- src/main/java/com/hivekion/room/bean/MoveRootTask.java | 8 -------- src/main/java/com/hivekion/room/bean/SupplierTask.java | 6 ------ 4 files changed, 4 insertions(+), 25 deletions(-) diff --git a/src/main/java/com/hivekion/room/bean/AbtParentTask.java b/src/main/java/com/hivekion/room/bean/AbtParentTask.java index 1b40ad7..853336b 100644 --- a/src/main/java/com/hivekion/room/bean/AbtParentTask.java +++ b/src/main/java/com/hivekion/room/bean/AbtParentTask.java @@ -31,9 +31,11 @@ public abstract class AbtParentTask implements TaskAction { //任务数据 protected final ScenarioTask scenarioTask; - + //房间ID protected final String roomId; + //http请求 protected WebClient webClient = WebClient.create(); + //线程池 protected ThreadPoolExecutor executor = new ThreadPoolExecutor( 5, // 核心线程数 10, // 最大线程数 @@ -52,9 +54,8 @@ public abstract class AbtParentTask implements TaskAction { - protected abstract void finished(); - protected abstract void setMag(int mag); + @Override public void doSomeThing() { diff --git a/src/main/java/com/hivekion/room/bean/BattleRootTask.java b/src/main/java/com/hivekion/room/bean/BattleRootTask.java index 6f515c9..de91523 100644 --- a/src/main/java/com/hivekion/room/bean/BattleRootTask.java +++ b/src/main/java/com/hivekion/room/bean/BattleRootTask.java @@ -27,13 +27,5 @@ public class BattleRootTask extends AbtParentTask { - @Override - protected void finished() { - } - - @Override - protected void setMag(int mag) { - - } } diff --git a/src/main/java/com/hivekion/room/bean/MoveRootTask.java b/src/main/java/com/hivekion/room/bean/MoveRootTask.java index e4d60cb..04230f0 100644 --- a/src/main/java/com/hivekion/room/bean/MoveRootTask.java +++ b/src/main/java/com/hivekion/room/bean/MoveRootTask.java @@ -92,15 +92,7 @@ public class MoveRootTask extends AbtParentTask implements TaskAction { - @Override - protected void finished() { - } - - @Override - protected void setMag(int mag) { - - } } diff --git a/src/main/java/com/hivekion/room/bean/SupplierTask.java b/src/main/java/com/hivekion/room/bean/SupplierTask.java index 2082824..b57bd9e 100644 --- a/src/main/java/com/hivekion/room/bean/SupplierTask.java +++ b/src/main/java/com/hivekion/room/bean/SupplierTask.java @@ -18,10 +18,7 @@ public class SupplierTask extends AbtParentTask implements TaskAction { super(scenarioTask,roomId); } - @Override - protected void finished() { - } @Override public void doSomeThing() { @@ -31,8 +28,5 @@ public class SupplierTask extends AbtParentTask implements TaskAction { - @Override - protected void setMag(int mag) { - } }