From 3cadc87641be6d6d6a84910ef2fcfac49cd55223 Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期二, 18 七月 2023 15:43:11 +0800
Subject: [PATCH] APP位置接口取消菜单权限
---
ard-work/src/main/java/com/ruoyi/alarm/globalAlarm/service/impl/QueueManager.java | 48 +++++++++++++++++++++++++++++++++++++-----------
1 files changed, 37 insertions(+), 11 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..1dbe0e4 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
@@ -2,6 +2,8 @@
import com.ruoyi.alarm.globalAlarm.domain.GuidePriorityQueue;
import com.ruoyi.alarm.globalAlarm.domain.GuideTask;
+import com.ruoyi.common.utils.StringUtils;
+import lombok.extern.slf4j.Slf4j;
import org.apache.tomcat.util.threads.TaskThread;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
@@ -11,21 +13,25 @@
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.PriorityBlockingQueue;
+import static jdk.nashorn.internal.runtime.regexp.joni.Config.log;
+
/**
* @ClassName QueueManager
- * @Description:
+ * @Description: 闃熷垪绠$悊
* @Author 鍒樿嫃涔�
* @Date 2023/6/29 21:09
* @Version 1.0
*/
@Component
+@Slf4j(topic = "guideQueue")
public class QueueManager {
@Autowired
private QueueTaskExecutor taskExecutor;
private Map<String, TaskThread> threadMap = new ConcurrentHashMap<>();
+ /*鍐呴儴闈欐�佺被*/
private static class TaskThread {
private Thread thread;
private GuideTask currentTask;
@@ -48,36 +54,56 @@
}
}
- 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);
+ if(StringUtils.isNull(guideTaskQueue))
+ {
+ log.info("鐩告満鏈櫥褰�,娌℃湁闃熷垪,鏃犳硶鍏ラ槦寮曞");
+ return;
+ }
+ log.debug("鏂颁换鍔″叆闃�:"+task.getAlarmId());
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();
+ log.debug("鍙栧嚭闃熷垪鏁版嵁:"+task.getAlarmId());
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
+ log.info("涓柇褰撳墠绾跨▼");
+ //绾跨▼涓柇锛岄��鍑哄惊鐜�
Thread.currentThread().interrupt();
}
}
--
Gitblit v1.9.3