diff --git a/cloud-task-server/src/main/java/com/muyu/task/server/service/impl/TaskInfoServiceImpl.java b/cloud-task-server/src/main/java/com/muyu/task/server/service/impl/TaskInfoServiceImpl.java index 688a5a8..aba344a 100644 --- a/cloud-task-server/src/main/java/com/muyu/task/server/service/impl/TaskInfoServiceImpl.java +++ b/cloud-task-server/src/main/java/com/muyu/task/server/service/impl/TaskInfoServiceImpl.java @@ -277,7 +277,7 @@ public class TaskInfoServiceImpl extends ServiceImpl i if (Weight.urgency.getValue().equals(weight)){ log.info("执行紧急任务"); // 调整线程分配以适应紧急任务 - adjustForEmergency(); + for (long i = 1; i <= count; i++) { long pageNum = (i - 1) * PAGE_SIZE; @@ -290,8 +290,7 @@ public class TaskInfoServiceImpl extends ServiceImpl i } catch (InterruptedException e) { throw new RuntimeException(e); } - // 任务完成后恢复默认线程分配 - restoreDefaults(); + } long end = System.currentTimeMillis(); log.info("执行时间:{}",end-start); diff --git a/cloud-task-server/src/main/java/com/muyu/task/server/thread/OptimizedPrioritizedThreadPool.java b/cloud-task-server/src/main/java/com/muyu/task/server/thread/OptimizedPrioritizedThreadPool.java index 2f9bf96..8311021 100644 --- a/cloud-task-server/src/main/java/com/muyu/task/server/thread/OptimizedPrioritizedThreadPool.java +++ b/cloud-task-server/src/main/java/com/muyu/task/server/thread/OptimizedPrioritizedThreadPool.java @@ -1,6 +1,7 @@ package com.muyu.task.server.thread; import java.util.concurrent.*; +import java.util.concurrent.atomic.AtomicInteger; public class OptimizedPrioritizedThreadPool { private static final ExecutorService executor; @@ -20,7 +21,7 @@ public class OptimizedPrioritizedThreadPool { private static final int emergencyLowThreads = 5; private static volatile boolean inEmergencyMode = false; - + private static final AtomicInteger activeEmergencyTasks = new AtomicInteger(0);// 紧急任务计数器 static { if (defaultHighThreads + defaultMediumThreads + defaultLowThreads > totalThreads) { throw new IllegalArgumentException("Default priority threads exceed total threads."); @@ -42,7 +43,9 @@ public class OptimizedPrioritizedThreadPool { } public static void submitEmergencyTask(Runnable task) { - + if (activeEmergencyTasks.incrementAndGet()==1){ + adjustForEmergency(); + } try { emergencySemaphore.acquire(); executor.submit(() -> { @@ -50,7 +53,9 @@ public class OptimizedPrioritizedThreadPool { task.run(); } finally { emergencySemaphore.release(); - + if (activeEmergencyTasks.decrementAndGet()==0){ + restoreDefaults(); + } } }); } catch (InterruptedException e) {