From 0c1cee78c5c2c945dc892c13d2a9e75c43539d5d Mon Sep 17 00:00:00 2001 From: zhouwei <849588297@qq.com> Date: Fri, 27 Feb 2026 19:06:59 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BA=A2=E4=B8=AD=E6=B7=BB=E5=8A=A0=E6=B8=85?= =?UTF-8?q?=E7=90=86=E7=9A=84=E8=B5=84=E6=BA=90=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/robot/mj/EXGameController.java | 92 +++++++++++----- .../src/main/java/robot/mj/EXMainServer.java | 57 +++++++++- .../java/robot/mj/RobotConnectionManager.java | 104 ++++++++++++++++-- .../robot/mj/thread/ResourceCleanupUtil.java | 65 +++++++++++ .../robot/mj/thread/ThreadPoolConfig.java | 61 +++++----- .../classes/robot/mj/EXGameController.class | Bin 19002 -> 20180 bytes .../classes/robot/mj/EXMainServer.class | Bin 5587 -> 7440 bytes .../robot/mj/RobotConnectionManager$1.class | Bin 1986 -> 1986 bytes .../robot/mj/RobotConnectionManager$2.class | Bin 1097 -> 1097 bytes .../robot/mj/RobotConnectionManager$3.class | Bin 1084 -> 1084 bytes .../robot/mj/RobotConnectionManager.class | Bin 21250 -> 24014 bytes .../robot/mj/thread/ThreadPoolConfig$1.class | Bin 1223 -> 1223 bytes .../robot/mj/thread/ThreadPoolConfig$2.class | Bin 1224 -> 1224 bytes .../robot/mj/thread/ThreadPoolConfig.class | Bin 4551 -> 4993 bytes .../compile/default-compile/createdFiles.lst | 1 + .../compile/default-compile/inputFiles.lst | 32 +++--- .../default-testCompile/inputFiles.lst | 2 +- robots/majiang/robot_mj_hz/target/robot.jar | Bin 86023 -> 90765 bytes 18 files changed, 332 insertions(+), 82 deletions(-) create mode 100644 robots/majiang/robot_mj_hz/src/main/java/robot/mj/thread/ResourceCleanupUtil.java diff --git a/robots/majiang/robot_mj_hz/src/main/java/robot/mj/EXGameController.java b/robots/majiang/robot_mj_hz/src/main/java/robot/mj/EXGameController.java index 2b41b52..7fa7bcc 100644 --- a/robots/majiang/robot_mj_hz/src/main/java/robot/mj/EXGameController.java +++ b/robots/majiang/robot_mj_hz/src/main/java/robot/mj/EXGameController.java @@ -12,6 +12,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import redis.clients.jedis.Jedis; import robot.mj.info.RobotUser; +import robot.mj.thread.ThreadPoolConfig; import taurus.client.TaurusClient; import taurus.client.business.GroupRoomBusiness; import taurus.util.ROBOTEventType; @@ -34,6 +35,12 @@ public class EXGameController extends GameController { //机器人房间 protected static final Map robotRoomMapping = new ConcurrentHashMap<>(); + //记录最近访问时间 + private static final Map lastAccessTime = new ConcurrentHashMap<>(); + + //设置连接超时时间(5分钟) + private static final long CONNECTION_TIMEOUT = 5 * 60 * 1000; + public EXGameController() { super(); log.info("红中麻将游戏控制器已初始化"); @@ -225,31 +232,7 @@ public class EXGameController extends GameController { int robotId = params.getInt("robotid"); String roomId = params.getString("roomid"); int groupId = params.getInt("groupid"); - - //防止玩家操作同一房间 导致其他机器人加入 - List robotUsers = getRobotUsersByRoomId(Integer.parseInt(roomId)); - if (!robotUsers.isEmpty()) { - synchronized (robotUsers) { - RobotUser robotUser = robotUsers.get(0); - if (robotId != Integer.parseInt(robotUser.getRobotId())) { - System.err.println("房间{"+ roomId +"}中已有机器人{"+robotUser.getRobotId()+"},当前机器人{"+robotId+"}不执行加入逻辑"); - return; - } - } - } - System.err.println("225开始进房间: "+"room:"+ roomId +"robot:"+robotId); - //加入房间 - joinRoomCommon(robotId, roomId, groupId, params); - System.err.println("225已进入房间准备成功: "+"room:"+ roomId +"robot:"+robotId); - } - /** - * 接收来自web_group的主动重连协议 - */ - @ActionKey(value = Config.WEB_GROUP_ACTIVE_RECONNECT, validate = GameInterceptor.NOT_PLAYER) - public void webGroupActive(Session session, ITObject params, int gid) { - int robotId = params.getInt("robotid"); - String roomId = params.getString("roomid"); //检查Redis中该房间是否真的包含当前机器人 if (!checkRobotInRoomRedis(roomId, String.valueOf(robotId))) { //Redis中不存在该机器人 清理本地可能的错误映射 @@ -278,6 +261,19 @@ public class EXGameController extends GameController { } } } + System.err.println("225开始进房间: "+"room:"+ roomId +"robot:"+robotId); + //加入房间 + joinRoomCommon(robotId, roomId, groupId, params); + System.err.println("225已进入房间准备成功: "+"room:"+ roomId +"robot:"+robotId); + } + + /** + * 接收来自web_group的主动重连协议 + */ + @ActionKey(value = Config.WEB_GROUP_ACTIVE_RECONNECT, validate = GameInterceptor.NOT_PLAYER) + public void webGroupActive(Session session, ITObject params, int gid) { + int robotId = params.getInt("robotid"); + String roomId = params.getString("roomid"); System.err.println("226开始进房间: " + "room:" + roomId + "robot:" + robotId); //加入房间 joinRoomCommon(params.getInt("robotid"), params.getString("roomid"), params.getInt("groupid"), params); @@ -390,7 +386,7 @@ public class EXGameController extends GameController { } catch (InterruptedException e) { log.error("加入房间超时异常"); } - }); + }, ThreadPoolConfig.getBusinessThreadPool());//指定自定义线程池 robotUser.setIntoRoomTime(robotConnectionManager.getTime()); System.err.println("已进入房间准备成功: " + robotUser.getConnecId()); } catch (Exception e) { @@ -438,7 +434,51 @@ public class EXGameController extends GameController { * 根据机器人ID删除其所在的房间信息 */ public static void removeRobotRoomInfo(String robotId) { - robotRoomMapping.remove(robotId); + RobotUser removedUser = robotRoomMapping.remove(robotId); + lastAccessTime.remove(robotId); + + // 如果有连接ID,也一并清理 + if (removedUser != null && removedUser.getConnecId() != null) { + robotRoomMapping.remove(removedUser.getConnecId()); + lastAccessTime.remove(removedUser.getConnecId()); + } + + System.out.println("清理机器人房间信息: " + robotId); + } + + /** + * 更新连接的最后访问时间 + */ + public static void updateLastAccessTime(String connecId) { + lastAccessTime.put(connecId, System.currentTimeMillis()); + } + + /** + * 清理超时的连接 + */ + public static void cleanupExpiredConnections() { + long currentTime = System.currentTimeMillis(); + List expiredConnections = new ArrayList<>(); + + for (Map.Entry entry : lastAccessTime.entrySet()) { + if (currentTime - entry.getValue() > CONNECTION_TIMEOUT) { + expiredConnections.add(entry.getKey()); + } + } + + for (String connecId : expiredConnections) { + RobotUser robotUser = robotRoomMapping.get(connecId); + if (robotUser != null) { + System.out.println("清理超时连接: " + connecId + ", 机器人ID: " + robotUser.getRobotId()); + robotConnectionManager.disconnectFromGameServer(connecId); + } + robotRoomMapping.remove(connecId); + lastAccessTime.remove(connecId); + } + + if (!expiredConnections.isEmpty()) { + System.out.println("本次清理了 " + expiredConnections.size() + " 个超时连接"); + } } /** diff --git a/robots/majiang/robot_mj_hz/src/main/java/robot/mj/EXMainServer.java b/robots/majiang/robot_mj_hz/src/main/java/robot/mj/EXMainServer.java index 2dd7600..4e71b83 100644 --- a/robots/majiang/robot_mj_hz/src/main/java/robot/mj/EXMainServer.java +++ b/robots/majiang/robot_mj_hz/src/main/java/robot/mj/EXMainServer.java @@ -11,6 +11,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import redis.clients.jedis.Jedis; import robot.mj.info.RobotUser; +import robot.mj.thread.ResourceCleanupUtil; +import robot.mj.thread.ThreadPoolConfig; import taurus.client.NetManager; import static robot.mj.EXGameController.robotRoomMapping; @@ -28,10 +30,34 @@ public class EXMainServer extends MainServer{ public void onStart() { super.onStart(); + //JVM关闭钩子 + Runtime.getRuntime().addShutdownHook(new Thread(() -> { + log.info("收到JVM关闭信号,开始优雅关闭..."); + try { + //关闭所有机器人连接 + for (Map.Entry entry : robotRoomMapping.entrySet()) { + RobotUser robotUser = entry.getValue(); + if (robotUser.getClient() != null && robotUser.getClient().isConnected()) { + robotConnectionManager.disconnectFromGameServer(robotUser.getConnecId()); + } + } + + //关闭线程池 + robot.mj.thread.ThreadPoolConfig.shutdown(); + + log.info("优雅关闭完成"); + } catch (Exception e) { + log.error("关闭过程中发生异常", e); + } + })); + // 1. 先启动独立的事件处理线程(只启动一次) startNetEventThread(); - // 2. 启动连接检查定时任务 + // 2. 启动资源清理定时任务 + startResourceCleanupScheduler(); + + // 3. 启动连接检查定时任务 //startConnectionCheckScheduler(); //测试 Jedis jedis2 = Redis.use("group1_db2").getJedis(); @@ -63,6 +89,7 @@ public class EXMainServer extends MainServer{ //5、干活 log.info("红中麻将机器人服务器已启动"); log.info("服务器将监听端口 {} 用于接收robot_mgr管理协议", gameSetting.port); + System.out.println("当前线程池配置: " + ThreadPoolConfig.getThreadPoolStatus()); jedis2.close(); } @@ -87,7 +114,35 @@ public class EXMainServer extends MainServer{ eventThread.start(); } + /** + * 启动资源清理定时任务 + */ + private void startResourceCleanupScheduler() { + Thread cleanupThread = new Thread(() -> { + while (true) { + try { + //每30秒执行一次资源清理 + Thread.sleep(30000); + ResourceCleanupUtil.performCleanup(); + System.out.println("线程池状态: " + ThreadPoolConfig.getThreadPoolStatus()); + } catch (InterruptedException e) { + break; + } catch (Exception e) { + System.err.println("资源清理任务异常: " + e.getMessage()); + // 发生异常时尝试清理 + try { + ResourceCleanupUtil.performCleanup(); + } catch (Exception cleanupEx) { + System.err.println("异常清理也失败: " + cleanupEx.getMessage()); + } + } + } + }, "ResourceCleanupThread"); + cleanupThread.setDaemon(true); + cleanupThread.start(); + System.out.println("资源清理定时任务已启动"); + } @Override public Room newRoom(String roomid, Map redis_room_map) { diff --git a/robots/majiang/robot_mj_hz/src/main/java/robot/mj/RobotConnectionManager.java b/robots/majiang/robot_mj_hz/src/main/java/robot/mj/RobotConnectionManager.java index 81db2ba..dc8397d 100644 --- a/robots/majiang/robot_mj_hz/src/main/java/robot/mj/RobotConnectionManager.java +++ b/robots/majiang/robot_mj_hz/src/main/java/robot/mj/RobotConnectionManager.java @@ -18,6 +18,7 @@ import taurus.client.MessageResponse; import taurus.client.TaurusClient; import taurus.client.SocketCode; import redis.clients.jedis.Jedis; +import taurus.util.ROBOTEventType; import java.util.*; import java.util.concurrent.*; @@ -32,6 +33,15 @@ public class RobotConnectionManager { private static final Map huNanHongZhongInstances = new ConcurrentHashMap<>(); private static final Logger log = Logger.getLogger(RobotConnectionManager.class); + + //记录活跃连接 用于资源清理判断 + private static final Set activeConnections = ConcurrentHashMap.newKeySet(); + + //记录连接创建时间 + private static final Map connectionCreationTime = new ConcurrentHashMap<>(); + + //连接最大生存时间(5分钟) + private static final long MAX_CONNECTION_LIFETIME = 5 * 60 * 1000; private final EXGameController exGameController; private final String host= Config.GAME_SERVER_HOST; @@ -46,6 +56,13 @@ public class RobotConnectionManager { * 获取红中麻将处理器实例 */ private HuNanHongZhong getHuNanHongZhongInstance(String connecId) { + //标记连接为活跃状态 + activeConnections.add(connecId); + connectionCreationTime.put(connecId, System.currentTimeMillis()); + + //定期清理过期连接 + cleanupExpiredInstances(); + HuNanHongZhong existingInstance = huNanHongZhongInstances.get(connecId); if (existingInstance != null) { return existingInstance; @@ -101,6 +118,10 @@ public class RobotConnectionManager { System.out.println("开始主动断开连接: {"+connecId+"}"); RobotUser robotUser = robotRoomMapping.remove(connecId); + //标记连接为非活跃 + activeConnections.remove(connecId); + connectionCreationTime.remove(connecId); + //清理连接数据 if (connecId != null) { HuNanHongZhong.removeFromRedis(connecId); @@ -129,6 +150,34 @@ public class RobotConnectionManager { } else { System.out.println("客户端连接不存在: {"+connecId+"}"); } + + //同时清理机器人房间映射 + EXGameController.removeRobotRoomInfo(robotUser.getRobotId()); + } + } + + /** + * 清理过期的实例 + */ + private void cleanupExpiredInstances() { + long currentTime = System.currentTimeMillis(); + List expiredConnections = new ArrayList<>(); + + //检查连接生存时间 + for (Map.Entry entry : connectionCreationTime.entrySet()) { + if (currentTime - entry.getValue() > MAX_CONNECTION_LIFETIME) { + expiredConnections.add(entry.getKey()); + } + } + + //清理过期连接 + for (String connecId : expiredConnections) { + System.out.println("清理过期连接实例: " + connecId); + disconnectFromGameServer(connecId); + } + + if (!expiredConnections.isEmpty()) { + System.out.println("本次清理了 " + expiredConnections.size() + " 个过期连接实例"); } } @@ -253,8 +302,25 @@ public class RobotConnectionManager { } } - sleepTime(2000); - currentInstance.outCard(client); + /*sleepTime(2000); + currentInstance.outCard(client);*/ + //非阻塞的延迟执行,增加更完善的异常处理 + scheduleDelay(() -> { + try { + currentInstance.outCard(client); + System.out.println("断线重连后成功执行出牌操作"); + } catch (Exception e) { + log.error("断线重连后执行出牌操作时发生异常", e); + //即使出牌失败,也要确保连接状态正确 + try { + if (robotUser != null) { + robotUser.setStatus(ROBOTEventType.ROBOT_INTOROOM_READY); + } + } catch (Exception statusEx) { + log.error("更新机器人状态时发生异常", statusEx); + } + } + }, 2, TimeUnit.SECONDS); } else { System.err.println("警告:重连时未获取到手牌数据"); } @@ -274,6 +340,15 @@ public class RobotConnectionManager { */ private void handleProtocol(String command, Message message, TaurusClient client, String connecId) { RobotUser robotUser = robotRoomMapping.get(connecId); + + //更新连接的最后访问时间 + EXGameController.updateLastAccessTime(connecId); + + if (robotUser == null) { + System.err.println("未找到机器人用户信息,连接ID: " + connecId); + return; + } + int robotId = Integer.parseInt(robotUser.getRobotId()); ITObject param = message.param; HuNanHongZhong huNanHongZhong = getHuNanHongZhongInstance(connecId); @@ -290,6 +365,7 @@ public class RobotConnectionManager { } //初始化手牌 else if ("811".equalsIgnoreCase(command)) { + robotUser.setStatus(ROBOTEventType.ROBOT_INTOROOM_WORKING); huNanHongZhong.cardInHead(command, message, client); //处理完协议后保存到Redis HuNanHongZhong currentInstance = huNanHongZhongInstances.get(connecId); @@ -318,6 +394,9 @@ public class RobotConnectionManager { if (type == 1 || type == 2) { //为1 为大结算 为2为解散,都需要恢复数据 //更新机器人剩余数量 updateLeftoverRobot(Integer.parseInt(robotUser.getRobotId())); + + //游戏结束后主动断开连接 + disconnectFromGameServer(connecId); } ITObject params = TObject.newInstance(); params.putString("session", client.getSession()); @@ -437,14 +516,15 @@ public class RobotConnectionManager { } else if ("2009".equalsIgnoreCase(command)) { scheduleDelay(() -> { - Jedis localJedis = Redis.use().getJedis(); + Jedis jedis = null; try { + jedis = Redis.use().getJedis(); Integer paramRobotId = param.getInt("aid"); - if (robotUser != null) { + if (robotUser != null && paramRobotId != null) { String roomKey = String.valueOf(robotUser.getCurrentRoomId()); //查询该房间的玩家信息 - String playersStr = jedis0.hget(roomKey, "players"); + String playersStr = jedis.hget(roomKey, "players"); if (!playersStr.equals("[]")) { String players = playersStr.substring(1, playersStr.length() - 1); String[] playerIds = players.split(","); @@ -453,10 +533,6 @@ public class RobotConnectionManager { if (playerIds.length == 1) { int playerId = Integer.parseInt(playerIds[0].trim()); if (playerId == paramRobotId) { - - String gpid = jedis0.hget(roomKey, "gpid"); - String gpId = jedis0.hget(roomKey, "group"); - //发送退出房间协议 ITObject params = TObject.newInstance(); client.send("1005", params, response -> { @@ -471,11 +547,15 @@ public class RobotConnectionManager { } } } + } catch (NumberFormatException e) { + System.err.println("2009协议数字格式异常,robotId: " + param.get("aid") + ", connecId: " + connecId); + } catch (NullPointerException e) { + System.err.println("2009协议空指针异常,connecId: " + connecId); } catch (Exception e) { - log.error("处理机器人房间映射检查时发生异常"); + System.err.println("2009协议处理异常: " + e.getMessage() + ", connecId: " + connecId); } finally { - if (localJedis != null) { - localJedis.close(); + if (jedis != null) { + jedis.close(); } } }, 6, TimeUnit.SECONDS); diff --git a/robots/majiang/robot_mj_hz/src/main/java/robot/mj/thread/ResourceCleanupUtil.java b/robots/majiang/robot_mj_hz/src/main/java/robot/mj/thread/ResourceCleanupUtil.java new file mode 100644 index 0000000..b91a44d --- /dev/null +++ b/robots/majiang/robot_mj_hz/src/main/java/robot/mj/thread/ResourceCleanupUtil.java @@ -0,0 +1,65 @@ +package robot.mj.thread; + + +import robot.mj.EXGameController; + +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 资源清理工具类 + * 用于管理和清理不再使用的资源 防止内存泄漏 + */ +public class ResourceCleanupUtil { + + //需要清理的资源 + private static final Set pendingCleanupResources = ConcurrentHashMap.newKeySet(); + + /** + * 执行资源清理 + * 清理已完成对局但仍在内存中的资源 + */ + public static void performCleanup() { + if (pendingCleanupResources.isEmpty()) { + return; + } + + System.out.println("开始执行资源清理,待清理资源数: " + pendingCleanupResources.size()); + int cleanedCount = 0; + + Set resourcesToClean = ConcurrentHashMap.newKeySet(); + resourcesToClean.addAll(pendingCleanupResources); + + for (String resourceId : resourcesToClean) { + try { + + //从待清理列表中移除 + pendingCleanupResources.remove(resourceId); + cleanedCount++; + + System.out.println("已清理资源: " + resourceId); + } catch (Exception e) { + System.err.println("清理资源时发生异常: " + resourceId + ", 错误: " + e.getMessage()); + } + } + + System.out.println("资源清理完成,共清理: " + cleanedCount + " 个资源"); + } + + /** + * 执行常规清理 + */ + private static void performRegularCleanup() { + try { + //清理过期的机器人连接 + EXGameController.cleanupExpiredConnections(); + + //输出当前系统状态 + System.out.println("=== 系统资源状态 ==="); + System.out.println(ThreadPoolConfig.getThreadPoolStatus()); + + } catch (Exception e) { + System.err.println("执行常规清理时发生异常: " + e.getMessage()); + } + } +} \ No newline at end of file diff --git a/robots/majiang/robot_mj_hz/src/main/java/robot/mj/thread/ThreadPoolConfig.java b/robots/majiang/robot_mj_hz/src/main/java/robot/mj/thread/ThreadPoolConfig.java index 62125e5..8c3004c 100644 --- a/robots/majiang/robot_mj_hz/src/main/java/robot/mj/thread/ThreadPoolConfig.java +++ b/robots/majiang/robot_mj_hz/src/main/java/robot/mj/thread/ThreadPoolConfig.java @@ -8,36 +8,36 @@ import java.util.concurrent.atomic.AtomicInteger; */ public class ThreadPoolConfig { - // 优化后的线程池配置:针对机器人场景优化 + //线程池配置 private static final ExecutorService BUSINESS_THREAD_POOL = new ThreadPoolExecutor( - 10, // 核心线程数 - 减少核心线程数 - 50, // 最大线程数 - 降低最大线程数 - 30, // 空闲线程存活时间 - 缩短存活时间 + 5, //核心线程数 + 20, //最大线程数 + 60, //空闲线程存活时间 TimeUnit.SECONDS, - new LinkedBlockingQueue<>(10000), // 增大队列容量,减少拒绝任务 + new LinkedBlockingQueue<>(5000), new ThreadFactory() { private final AtomicInteger threadNumber = new AtomicInteger(1); @Override public Thread newThread(Runnable r) { Thread t = new Thread(r, "RobotBusinessThread-" + threadNumber.getAndIncrement()); t.setDaemon(true); - t.setPriority(Thread.NORM_PRIORITY - 2); // 进一步降低线程优先级 + t.setPriority(Thread.NORM_PRIORITY - 1); return t; } }, - new ThreadPoolExecutor.CallerRunsPolicy() // 拒绝策略:由调用线程执行 + new ThreadPoolExecutor.CallerRunsPolicy() ); - - // 添加定时任务线程池,专门处理延迟操作 + + //添加定时任务线程池 private static final ScheduledExecutorService SCHEDULED_EXECUTOR_SERVICE = - Executors.newScheduledThreadPool(4, new ThreadFactory() { + new ScheduledThreadPoolExecutor(2, new ThreadFactory() { private final AtomicInteger threadNumber = new AtomicInteger(1); @Override public Thread newThread(Runnable r) { Thread t = new Thread(r, "RobotScheduledThread-" + threadNumber.getAndIncrement()); t.setDaemon(true); - t.setPriority(Thread.NORM_PRIORITY - 2); + t.setPriority(Thread.NORM_PRIORITY - 1); return t; } }); @@ -65,42 +65,49 @@ public class ThreadPoolConfig { } }, delay, unit); } - + /** - * 执行周期性任务 - */ - public static void scheduleAtFixedRate(Runnable task, long initialDelay, long period, TimeUnit unit) { - SCHEDULED_EXECUTOR_SERVICE.scheduleAtFixedRate(task, initialDelay, period, unit); - } - - /** - * 优雅关闭线程池,释放资源 + * 关闭线程池 释放资源 */ public static void shutdown() { System.out.println("开始关闭线程池..."); - - // 关闭定时任务线程池 + + //关闭定时任务线程池 SCHEDULED_EXECUTOR_SERVICE.shutdown(); try { - if (!SCHEDULED_EXECUTOR_SERVICE.awaitTermination(5, TimeUnit.SECONDS)) { + if (!SCHEDULED_EXECUTOR_SERVICE.awaitTermination(3, TimeUnit.SECONDS)) { + System.out.println("定时任务线程池强制关闭"); SCHEDULED_EXECUTOR_SERVICE.shutdownNow(); } } catch (InterruptedException e) { SCHEDULED_EXECUTOR_SERVICE.shutdownNow(); Thread.currentThread().interrupt(); } - - // 关闭业务线程池 + + //关闭业务线程池 BUSINESS_THREAD_POOL.shutdown(); try { - if (!BUSINESS_THREAD_POOL.awaitTermination(10, TimeUnit.SECONDS)) { + if (!BUSINESS_THREAD_POOL.awaitTermination(5, TimeUnit.SECONDS)) { + System.out.println("业务线程池强制关闭"); BUSINESS_THREAD_POOL.shutdownNow(); } } catch (InterruptedException e) { BUSINESS_THREAD_POOL.shutdownNow(); Thread.currentThread().interrupt(); } - + System.out.println("线程池关闭完成"); } + + /** + * 获取线程池状态信息 + */ + public static String getThreadPoolStatus() { + ThreadPoolExecutor executor = (ThreadPoolExecutor) BUSINESS_THREAD_POOL; + return String.format("线程池状态 - 核心:%d, 活跃:%d, 完成:%d, 队列:%d", + executor.getCorePoolSize(), + executor.getActiveCount(), + executor.getCompletedTaskCount(), + executor.getQueue().size()); + } } diff --git a/robots/majiang/robot_mj_hz/target/classes/robot/mj/EXGameController.class b/robots/majiang/robot_mj_hz/target/classes/robot/mj/EXGameController.class index eecc41a49e4fd8d245059dbb0a9d91f4b514cbd9..4731917947881f07a8cbc55e36913ebc809e0912 100644 GIT binary patch delta 9973 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 delta 8801 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 diff --git a/robots/majiang/robot_mj_hz/target/classes/robot/mj/EXMainServer.class b/robots/majiang/robot_mj_hz/target/classes/robot/mj/EXMainServer.class index 63ed309d0500ad415936e3381dbe1d936c1204d4..a951fb574200ae9944139969e7ed4bc560c8242e 100644 GIT binary patch literal 7440 zcmbVR349dib$?IStab+^E#eT!Mu0Fv0#*`W9DxrI5)zU?mH-2Gj0b5XEv$AndvMrs z4A@|d!QckhHg@78c0}tK8%!1<;kaj-rfJfqcbnd<1ijqbt?NelznR(HSs`40g`eiT z-uLeJzW06m{htnfhlrN(2{-l9JM#IKo8F~!3ccsW!bLab(6?nK?xrrfB%eVSU3SwD z4ZGY-nwU-!^=={Mx_J%xTVpT1AOrO*%DG>zWzP%-_s zLO+zjk6iRSGX7l|{Mb#uN58MoAGm3@FfyC|&_#bF?H{}7Po(`*7yX&EKXK8YOZyit z`b%m5DxaF@uZ8&EkPTnB!?Kp6=oq;Fn7jp6TXUT&nPGBI7#>-_DdBFnXE1twy-l7YXz%+vRIDdVBTo zN~URHW2X_VH-bUEE9y6bZCX&n3e%icbH&%c%hxd>2sY=f@(2CVdqALK;TEQxdZSxs zDrofw^$oH9oqBkawljbkQ0~$KTePrW#`a`Rw9g-5nx3Z9u(eI|2Rrrf9+Nf22zExb zaFi+EWMy+i_$o=m`-44(#hfgGpIki{4ev+WV6|#9#0u93v`9n;sj02Iv^|D~TFEz_*lu=IRg0Y5NBeCE7wz03j3;v%wJ2L-Q%Dxd{>eVx&;KiCTZ zSHBiAITambkiz1$OdaeGCH1f}6V&2r)s6UXoVf>R*WBvvlr_g`O^__lL~_f-C&4~l zyP-n08)0BvqZ-X9f*aLNL>I>^yH^V#LB- zdVN6Gg0WC%SD)S;3y2R)>awPiD3zeTx5F^{neM8%QB9e`tz6jJW%TgEpVYu?c|0jW4)ZWe5$cHTL0d2p?xw@ixLS}E2 z@dj)b3W&vi{52yuMIMQPiKS=6$0U$OCWwZOfT`xv3MbliTECuN6@^KB8qm)j0j+;$ zw^shSRx3w*F%($lV7@sR)x+UfD5`fi?Ca7)l7N6X-!^ZuuLQdE&M`7Dv(RVhIIDn+PY;khc$<8mN0quOL9 z>3fB13?mwehP6x4-5WMyp_(1t zJ8KnQr1D~3qOecpY6jm0sbGb|d;G}VMZJ$LU0Qutb@k(QAvi}}Eq2XTxt5nA*i>G| z%N4#;dIP&#P2k%MA)Qs=SVyfGovzW{Oeaept?{sa?8kIhb58qx_oM6-%n|zeeR2 znaH_wSuOglCa5K=%55^rs;yOd12?I>k)BYwo$ptBY63O(V;i5 z4!(PRXgKlyk&#!25-*>WRd$H_%U9x{x^aUgFqUg}12ufMC8mz4-o-(N~^N zoch-2JMSe&%HfzI&Mm~qrW#idhU(UQ%4dfPF_2APUWq=ZuIWao)(dgM{N6x=~{qTv=56{&hFKR09#rQPmX<78qH>gD3hz;Quf)JUG30*n%tr;6*9o0CcYNgNDby6!=4&544Nri3CQd#- zdiphsFO?tTFT=JDeWxoRg&$Y>EBpl0?9_V4gq0XmaXP7|5r`pgR?Z;VXCwwNpB^_O zD{D~$2T)PkIvufK)ZdRx>F(8|slikn5jViBbn^i|h`RtELTMO|1yTKshYLz2h+IG2 zd7c8TH80gV&ldV5LCL73rf|EF44WW`uQLC=l!Q2Yr_G z9ijv95sQHNiRuIEkh|&rdJTmKIQ@JoCKQerD95Z9QN%#xo9Z9?&4g{FyIpwme zNn5SSS{3jv)KKC5ojU5_qNFy>WlUk&VNVmr@~vnNHSoP5rLetCZl#kE+qxYZR_MDm%>rjO+@W7Dm0^3@+}JF5N-%i zS4h;A;e)nz9YJKzIO8g10>vM}&CL&C80N~wwNCn_6*s*TiF}3QuYEAIoX}vn7t(a< z(WuFtM`TNl<~j<+bWSOEz`#Cb6XhKz3`m7cZ8iN=r^a=QXXM3-#!B-27Cy;M4K zP;~fBKFqyV)B6pWAg5xxs5;jyfd$u7Oyy2o_C5B+XXoD z8V8N#Lyz?)7|w6RV&=|GW+JxMVZoUNW!FhS8)2y90Wp+=8^94;<;!Ig_z*6CNG@e~T8$&)@3|V4G~c76^3W9D
    !D%GovqNV-IMaZ)hr!e74E zJxHE7sjc40ZB>inRIp+3Wh!L4Ohrs}IVCxl$;j7P-cy4(vib(p4YyF}AV zaxc>inJtOaOz$jwWTrGZ6Q|qabo(&P25ebfUP+!4eojfAcW#{Kp(&5kd^C5&X#tvw zI4wj|8Ku6nLeCI=N~b@g$>`R63e;KhTwu8)ZG(!ku(ibU!&OAy zyD!l_tyMX3x)(aVFYVu6fD)d53&3?T{CWnwT6}$)g}|1jfZWi)aiGtV2ML>uZj+f~ zky#BgYcj~dvfg_5WSZPG2?{8$fSv=nlOT5rYIxp3a!!h*7cfGS0e1?7B}%u0WHws& zFsQ5|oIn;jo&{)O)hMRcLE11#8y(TvJ}x>3#(vT=K#eUIsMF3+-c0~O zD%qThU|<-)E1m;n3)bL+X^?@j7tWhZmLrny2k~;Mq7KAu3*xi`E0Txnz&t^Fd5E8U z7_c1fz5qt7po4%uM2ld;COU#W&tTWnw2_V?$sdCekEa}>0=QmBMj)(~(wp=R2)zjT z<8}1NjI~nW?@{QjdWGH|LzZE*=I2u?&4QwEUfX(?XcoIo9i#_}X)AO!F!l+wp|lK) zeS98^*!axiPy9$Iye{rRmbd>7kct67n_% zUyRek17qJCq#c6w5fkeG6~NXtUJZD5X484lche&{Upv5?7^xOq63xTx9WcrQS`PCx z(n6%#Dn!x}+JY4Q2rb2q8tMkLLCaFcSx&ReWSRxo`DQX@z<6xq8~|SNT5IhPdZLpe z%KeOHAOo&I2HXf+d7$32NyXqu7gr{l;_Vuw?hmMDm~_Ng&j;j__+XP~w+U2&jpF;i zfcY%?McRjUCdS41A#iV={L0tM+o*(}=3{)6N=U*~a*R0c1^NJgR_{Mjy-(@F&j5oG B7Nr0H delta 2415 zcmZuz33yyp75>jG@4k6+Gnq`%WzwX3nkF;ZCTWUki?|h)QU<}L}^kdNuw1NR8SGED*{>VbKaEHRjL-+(fsc^_a6bHhH;8O~B8s^hBK4bXL8s;tsBlw)c=N-gNuy_t%uyMEH zzG&kfgTG|s%Ld-zcG%+N&H>oA2{XSr{*X;r}0lb?>?dCrSLDD z5=3|R?C)tB=o#v3>e`##HPol^Z=4oLhsJ+!O5+8bQFu{fTHq$^s$St4td>-3+lqEA zKEs7tQY#yq`PZVwZv=t%wiM}rr`p=ud|q?2mZ0H$sgxE=phclqi!C87j)XN{g-f+) zDbd)1OWeEdq!rOp%9xMa7gk3lrled;1+G^zOUrDTV-DwPiKEkvsJdKb6rH7(%+pdO z)x6b)%uwHT{R9n{^=H#Py&79(zLo{DP|G4y($Z{ZM`mx+;O?gNS9E4FgGOPoplpWt z(t)09(^+${L=c~GaBq?X zX+3L(^_HGpLtW|Y{&ZH!axHaIFIeE7kp=Eu;cc!inLl>Fe###W?i|SMNjs8|B;TJj zxNG$y_hfWE3%u0b8Yy>=#Vj`&wB7Axt?tuhiEwbwKsr6l;xFIm9*=c~8?`h^O5<%T zQAha-X>*6m9}TP!)VL?htKDlVlDQ3h-5g(3nxd1cG;JUbu~QsD!Y*=6#6ldbABP+! z;lpKwmM5HzSCiHS1-u5AlM^$#gf#YD1V0o-OK9xlzdsh3Krjz$bIi_dNhI?KUD7ZK zM=*)7pd%0uOmaGK5H}mDMEGta9l=qQP9fSojCy%*P zh*P(+!-`uo_2v&m|H!fsbJM?Ff&eE^g&fKQjIBC=#*cBpQ4$RAc>-9GZ@xc>*nyNcoY-qt#S5 z;8pi(?lhp9+(Ou>K^c~z0<~<>a;!le29Ur$B=HV3;3hQUR<`LNnsEp%T&bC6YY)41&gL`b%rrf;8FhJ~?WRsr%rdsWs)DPylxbIRKId{e&CJe5&ht>bO(`4<;|=sL$YKw@o7vw+V?VJog^un-avZDf zCFh^<0Iu|$nVV9p=*v)hSr7AS99FiM-b_6T&%{XjDcPT+$cHyl?M=9r&;;yac}%|H zDXi|Emuwiv8WVBmliTS1Pk~(9eCO@d^(|aWS!3KZ`lD;QsP+ zbA{;5e1(*7dqugq%E(tx>+EVOq1M~^RN#%9W@eid-ns4ug?IVs=H2J+*2Hk;Qy$we zfme_u}=$mE0LcJ10LuVL0L_z72XZ`5 B4O9RC delta 43 zcmX@ae~5p>YBt86$!plUB_}X&F-&6MXPCku$}p8dpJ4`rIm0XlPlh>@1K5iI9@PuX diff --git a/robots/majiang/robot_mj_hz/target/classes/robot/mj/RobotConnectionManager$2.class b/robots/majiang/robot_mj_hz/target/classes/robot/mj/RobotConnectionManager$2.class index 7c8ecc4a6dcaa50a32ad75fc5ce22f896f580a8b..4b25fb0a0466b2b07442608205a677c4b1a4fcd0 100644 GIT binary patch delta 27 jcmX@fagt-hRA$DDlczC+rJ~QLw$py?#jMFD?X7&QI|1sME0CrXh7ytkO delta 25 fcmdnPv4>+rJ~N}sd^1d~imCM=4A3bG3- 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 Sy{F#SBi>aX$4b9e@BcsQ)MTUp literal 21250 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 Pgx=*R)kD6$=tJ*6Wy3q` diff --git a/robots/majiang/robot_mj_hz/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/robots/majiang/robot_mj_hz/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst index 006e2d2..c392fea 100644 --- a/robots/majiang/robot_mj_hz/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst +++ b/robots/majiang/robot_mj_hz/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -16,6 +16,7 @@ robot\mj\EXRoom.class robot\mj\thread\ThreadPoolConfig.class robot\mj\thread\ThreadPoolConfig$2.class taurus\util\Util.class +robot\mj\thread\ResourceCleanupUtil.class taurus\util\HongZhongSuanFaTest$HandAnalysis.class taurus\util\HongZhongSuanFaTest.class robot\mj\RoomCreator.class diff --git a/robots/majiang/robot_mj_hz/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/robots/majiang/robot_mj_hz/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst index 29fd4e0..ab7c099 100644 --- a/robots/majiang/robot_mj_hz/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +++ b/robots/majiang/robot_mj_hz/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -1,15 +1,17 @@ -D:\robotpro\robot_webgroup\robots\majiang\robot_mj_hz\src\main\java\robot\mj\EXPlayer.java -D:\robotpro\robot_webgroup\robots\majiang\robot_mj_hz\src\main\java\robot\mj\handler\HuNanHongZhong.java -D:\robotpro\robot_webgroup\robots\majiang\robot_mj_hz\src\main\java\taurus\util\HongZhongSuanFaTest.java -D:\robotpro\robot_webgroup\robots\majiang\robot_mj_hz\src\main\java\robot\mj\EXActionEvent.java -D:\robotpro\robot_webgroup\robots\majiang\robot_mj_hz\src\main\java\taurus\util\ROBOTEventType.java -D:\robotpro\robot_webgroup\robots\majiang\robot_mj_hz\src\main\java\taurus\util\Util.java -D:\robotpro\robot_webgroup\robots\majiang\robot_mj_hz\src\main\java\robot\mj\Config.java -D:\robotpro\robot_webgroup\robots\majiang\robot_mj_hz\src\main\java\robot\mj\EXMainServer.java -D:\robotpro\robot_webgroup\robots\majiang\robot_mj_hz\src\main\java\robot\mj\RobotConnectionManager.java -D:\robotpro\robot_webgroup\robots\majiang\robot_mj_hz\src\main\java\robot\mj\info\RobotUser.java -D:\robotpro\robot_webgroup\robots\majiang\robot_mj_hz\src\main\java\robot\mj\business\AccountBusiness.java -D:\robotpro\robot_webgroup\robots\majiang\robot_mj_hz\src\main\java\robot\mj\EXRoom.java -D:\robotpro\robot_webgroup\robots\majiang\robot_mj_hz\src\main\java\robot\mj\RoomCreator.java -D:\robotpro\robot_webgroup\robots\majiang\robot_mj_hz\src\main\java\taurus\util\CardUtil.java -D:\robotpro\robot_webgroup\robots\majiang\robot_mj_hz\src\main\java\robot\mj\EXGameController.java +D:\project\robot_webFenli\robots\majiang\robot_mj_hz\src\main\java\robot\mj\RoomCreator.java +D:\project\robot_webFenli\robots\majiang\robot_mj_hz\src\main\java\robot\mj\EXGameController.java +D:\project\robot_webFenli\robots\majiang\robot_mj_hz\src\main\java\robot\mj\EXPlayer.java +D:\project\robot_webFenli\robots\majiang\robot_mj_hz\src\main\java\robot\mj\handler\HuNanHongZhong.java +D:\project\robot_webFenli\robots\majiang\robot_mj_hz\src\main\java\robot\mj\business\AccountBusiness.java +D:\project\robot_webFenli\robots\majiang\robot_mj_hz\src\main\java\robot\mj\EXActionEvent.java +D:\project\robot_webFenli\robots\majiang\robot_mj_hz\src\main\java\taurus\util\ROBOTEventType.java +D:\project\robot_webFenli\robots\majiang\robot_mj_hz\src\main\java\taurus\util\CardUtil.java +D:\project\robot_webFenli\robots\majiang\robot_mj_hz\src\main\java\taurus\util\Util.java +D:\project\robot_webFenli\robots\majiang\robot_mj_hz\src\main\java\robot\mj\EXMainServer.java +D:\project\robot_webFenli\robots\majiang\robot_mj_hz\src\main\java\robot\mj\Config.java +D:\project\robot_webFenli\robots\majiang\robot_mj_hz\src\main\java\robot\mj\thread\ResourceCleanupUtil.java +D:\project\robot_webFenli\robots\majiang\robot_mj_hz\src\main\java\taurus\util\HongZhongSuanFaTest.java +D:\project\robot_webFenli\robots\majiang\robot_mj_hz\src\main\java\robot\mj\info\RobotUser.java +D:\project\robot_webFenli\robots\majiang\robot_mj_hz\src\main\java\robot\mj\RobotConnectionManager.java +D:\project\robot_webFenli\robots\majiang\robot_mj_hz\src\main\java\robot\mj\thread\ThreadPoolConfig.java +D:\project\robot_webFenli\robots\majiang\robot_mj_hz\src\main\java\robot\mj\EXRoom.java diff --git a/robots/majiang/robot_mj_hz/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/robots/majiang/robot_mj_hz/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst index 2eda5cb..cff7a0d 100644 --- a/robots/majiang/robot_mj_hz/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst +++ b/robots/majiang/robot_mj_hz/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst @@ -1 +1 @@ -D:\robotpro\robot_webgroup\robots\majiang\robot_mj_hz\src\test\java\robot_mj_hongzhong\Main.java +D:\project\robot_webFenli\robots\majiang\robot_mj_hz\src\test\java\robot_mj_hongzhong\Main.java diff --git a/robots/majiang/robot_mj_hz/target/robot.jar b/robots/majiang/robot_mj_hz/target/robot.jar index fb7327c9fb7c81f0f8bddbc9ef7fd0ce81b22706..923f75ebc403d172b3481ff78394cf8feecf380e 100644 GIT binary patch delta 32360 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%0DQ;f?!)NU96$0Y|xG1yJzyHlH`gxi+s@Au>X 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 JrD1Lk_kTk{z83%h