From aea5c583b2e081f5ff18639d56bb62705e3ad371 Mon Sep 17 00:00:00 2001 From: Cui YongXing <2835316714@qq.com> Date: Thu, 5 Sep 2024 20:09:28 +0800 Subject: [PATCH] =?UTF-8?q?=E7=B4=A7=E6=80=A5=E4=BB=BB=E5=8A=A1=E7=BA=BF?= =?UTF-8?q?=E7=A8=8B=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../task/server/service/impl/TaskInfoServiceImpl.java | 5 ++--- .../server/thread/OptimizedPrioritizedThreadPool.java | 11 ++++++++--- 2 files changed, 10 insertions(+), 6 deletions(-) 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) {