From a38cb5bb3898f8996321df8f8d537ea18f4af71f Mon Sep 17 00:00:00 2001 From: ‘liusuyi’ <1951119284@qq.com> Date: 星期五, 30 六月 2023 10:19:11 +0800 Subject: [PATCH] 优化 --- ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/QueueManager.java | 34 ++++++++++++++++++++++++---------- 1 files changed, 24 insertions(+), 10 deletions(-) diff --git a/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/QueueManager.java b/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/QueueManager.java index 0703126..f9b3861 100644 --- a/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/QueueManager.java +++ b/ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/QueueManager.java @@ -13,7 +13,7 @@ /** * @ClassName QueueManager - * @Description: + * @Description: 闃熷垪绠$悊 * @Author 鍒樿嫃涔� * @Date 2023/6/29 21:09 * @Version 1.0 @@ -26,6 +26,7 @@ private QueueTaskExecutor taskExecutor; private Map<String, TaskThread> threadMap = new ConcurrentHashMap<>(); + /*鍐呴儴闈欐�佺被*/ private static class TaskThread { private Thread thread; private GuideTask currentTask; @@ -48,36 +49,49 @@ } } - public void addTaskToQueue(String queueName, GuideTask task) { - PriorityBlockingQueue<GuideTask> guideTaskQueue = GuidePriorityQueue.cameraQueueMap.get(queueName); + /** + * 寮曞浠诲姟鍏ラ槦 + * 鍒樿嫃涔� + * 2023/6/30 8:57 + */ + public void addTaskToQueue(String cameraId, GuideTask task) { + /*閫氳繃鐩告満ID鑾峰彇寮曞闃熷垪锛屽苟灏嗗紩瀵间换鍔″姞鍏ラ槦鍒�*/ + PriorityBlockingQueue<GuideTask> guideTaskQueue = GuidePriorityQueue.cameraQueueMap.get(cameraId); guideTaskQueue.add(task); - TaskThread currentTaskThread = threadMap.get(queueName); + /*鑾峰彇璇ョ浉鏈虹殑褰撳墠鎵ц绾跨▼*/ + TaskThread currentTaskThread = threadMap.get(cameraId); + //濡傛灉闃熷垪褰撳墠绾跨▼姝e湪杩愯锛岃嫢鍏ラ槦浠诲姟浼樺厛绾уぇ浜庡綋鍓嶄换鍔′紭鍏堢骇锛屽垯缁堟褰撳墠绾跨▼ if (currentTaskThread != null && task.getPriority() > currentTaskThread.getCurrentTask().getPriority()) { currentTaskThread.getThread().interrupt(); } - - // Start a new thread if no thread is currently running for the queue + //濡傛灉闃熷垪褰撳墠娌℃湁绾跨▼姝e湪杩愯锛屽垯鍚姩鏂扮嚎绋� if (currentTaskThread == null || !currentTaskThread.getThread().isAlive()) { - Thread newThread = createThread(queueName, guideTaskQueue); - threadMap.put(queueName, new TaskThread(newThread, task)); + Thread newThread = createThread(cameraId, guideTaskQueue); + threadMap.put(cameraId, new TaskThread(newThread, task)); newThread.start(); } } + /** + * 鍒涘缓绾跨▼ + * 鍒樿嫃涔� + * 2023/6/30 9:04 + */ private Thread createThread(String queueName, PriorityBlockingQueue<GuideTask> queue) { + return new Thread(() -> { while (!Thread.currentThread().isInterrupted()) { try { GuideTask task = queue.take(); taskExecutor.processTask(task); GuidePriorityQueue.printPriorityQueue(); - // Update the current task for the thread + // 鏇存柊绾跨▼鐨勫綋鍓嶄换鍔� TaskThread currentTaskThread = threadMap.get(queueName); if (currentTaskThread != null) { currentTaskThread.setCurrentTask(task); } } catch (InterruptedException e) { - // Thread interrupted, exit the loop + //绾跨▼涓柇锛岄��鍑哄惊鐜� Thread.currentThread().interrupt(); } } -- Gitblit v1.9.3