From 01e15bda39a16790526b35b4adb821c7ce2529bb Mon Sep 17 00:00:00 2001 From: hezhanfeng Date: Mon, 30 Sep 2024 11:02:25 +0800 Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9Amulti-thread=20safety=20vulnerabili?= =?UTF-8?q?ties=EF=BC=88=E4=BF=AE=E5=A4=8D=E6=A0=BC=E5=BC=8F=E5=8C=96?= =?UTF-8?q?=E5=AF=B9=E8=B1=A1=E9=9D=9E=E7=BA=BF=E7=A8=8B=E5=AE=89=E5=85=A8?= =?UTF-8?q?=E7=9A=84=E6=BC=8F=E6=B4=9E=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tech/powerjob/server/web/response/WorkerStatusVO.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/response/WorkerStatusVO.java b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/response/WorkerStatusVO.java index a8a6b101..c445d124 100644 --- a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/response/WorkerStatusVO.java +++ b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/response/WorkerStatusVO.java @@ -48,12 +48,15 @@ public class WorkerStatusVO { * 27.7%(2.9/8.0 GB) */ private static final String OTHER_FORMAT = "%s%%(%s / %s GB)"; - private static final DecimalFormat df = new DecimalFormat("#.#"); private static final double THRESHOLD = 0.8; - public WorkerStatusVO(WorkerInfo workerInfo) { + // 使用 ThreadLocal 为每个线程提供独立的 DecimalFormat 实例 + private static final ThreadLocal DECIMAL_FORMAT_THREAD_LOCAL = ThreadLocal.withInitial(() -> new DecimalFormat("#.#")); + public WorkerStatusVO(WorkerInfo workerInfo) { + // 获取当前线程的 DecimalFormat 实例 + DecimalFormat df = DECIMAL_FORMAT_THREAD_LOCAL.get(); SystemMetrics systemMetrics = workerInfo.getSystemMetrics(); this.status = 1;