From b03c0bcf23641577336cd5b2682324094f671ae3 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 14:10:33 +0800 Subject: [PATCH] =?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 ++++++++++-- .../java/com/hivekion/room/bean/AbtParentTask.java | 7 ++++++- .../java/com/hivekion/room/bean/MoveRootTask.java | 6 ++++-- src/main/java/com/hivekion/room/bean/Room.java | 13 +++++++++++-- 4 files changed, 31 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/hivekion/room/RoomManager.java b/src/main/java/com/hivekion/room/RoomManager.java index 5bc96fb..8e7d724 100644 --- a/src/main/java/com/hivekion/room/RoomManager.java +++ b/src/main/java/com/hivekion/room/RoomManager.java @@ -6,7 +6,6 @@ import com.hivekion.room.func.TaskAction; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.ScheduledFuture; /** * [类的简要说明] @@ -62,10 +61,19 @@ public class RoomManager { } return 0; } - public static void addFuture(ScheduledExecutorService future,String roomId){ + + public static void addFuture(ScheduledExecutorService future, String roomId) { Room room = roomsMap.get(roomId); if (room != null) { room.addTaskReference(future); } } + + public static boolean isRunning(String id) { + Room room = roomsMap.get(id); + if (room != null) { + return room.isRunning(); + } + return false; + } } diff --git a/src/main/java/com/hivekion/room/bean/AbtParentTask.java b/src/main/java/com/hivekion/room/bean/AbtParentTask.java index f05aee2..9902065 100644 --- a/src/main/java/com/hivekion/room/bean/AbtParentTask.java +++ b/src/main/java/com/hivekion/room/bean/AbtParentTask.java @@ -66,11 +66,15 @@ public abstract class AbtParentTask implements TaskAction { public String getType() { return scenarioTask.getTaskType(); } + //获取房间的持续时间 public long getDuringTime() { return RoomManager.getRoomDuringTime(this.roomId); } - + //获取房间状态 + public boolean getRoomStatus() { + return RoomManager.isRunning(roomId); + } } // 自定义线程工厂 @@ -90,4 +94,5 @@ class CustomThreadFactory implements ThreadFactory { thread.setPriority(Thread.NORM_PRIORITY); return thread; } + } \ No newline at end of file diff --git a/src/main/java/com/hivekion/room/bean/MoveRootTask.java b/src/main/java/com/hivekion/room/bean/MoveRootTask.java index c270dc7..3a1ebce 100644 --- a/src/main/java/com/hivekion/room/bean/MoveRootTask.java +++ b/src/main/java/com/hivekion/room/bean/MoveRootTask.java @@ -104,8 +104,10 @@ public class MoveRootTask extends AbtParentTask implements TaskAction { ScheduledExecutorService schedule = Executors.newScheduledThreadPool( 1); schedule.scheduleWithFixedDelay(() -> { - - + long duringTime = getDuringTime(); + // + double distance = duringTime * SPEED; + }, 0, 1, TimeUnit.SECONDS); diff --git a/src/main/java/com/hivekion/room/bean/Room.java b/src/main/java/com/hivekion/room/bean/Room.java index 5233e2f..d336568 100644 --- a/src/main/java/com/hivekion/room/bean/Room.java +++ b/src/main/java/com/hivekion/room/bean/Room.java @@ -20,6 +20,7 @@ import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicLong; import lombok.Data; import lombok.extern.slf4j.Slf4j; @@ -37,6 +38,7 @@ import lombok.extern.slf4j.Slf4j; @Slf4j public class Room implements AutoCloseable { + private AtomicBoolean status = new AtomicBoolean(false); /** * 任务管理相关 */ @@ -57,7 +59,7 @@ public class Room implements AutoCloseable { //日期格式化 private DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); //房间中关联的任务管理器 - private Map futures = new ConcurrentHashMap<>(); + private Map futures = new ConcurrentHashMap<>(); //线程池 private final ExecutorService actionExecutor = new ThreadPoolExecutor( @@ -87,7 +89,7 @@ public class Room implements AutoCloseable { * @param time 总时间 */ public void start(long time) { - + status.set(true); totalTime.set(time); startTask(); } @@ -96,6 +98,7 @@ public class Room implements AutoCloseable { * 停止 */ public void stop() { + status.set(false); cancelTask(); } @@ -103,10 +106,12 @@ public class Room implements AutoCloseable { * 暂停 */ public void pause() { + status.set(false); cancelTask(); } public void resume() { + status.set(true); startTask(); } @@ -188,4 +193,8 @@ public class Room implements AutoCloseable { public void addTaskReference(ScheduledExecutorService scheduledExecutorService) { futures.put(IdUtils.simpleUUID(), scheduledExecutorService); } + + public boolean isRunning() { + return status.get(); + } }