From 9db9d0d01f12ec67933c6caf7bd47be5a0f13e81 Mon Sep 17 00:00:00 2001 From: tjq Date: Sat, 5 Dec 2020 10:36:33 +0800 Subject: [PATCH] fix: concurrency safety in ProcessotTrackerPool --- .../core/tracker/processor/ProcessorTrackerPool.java | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/powerjob-worker/src/main/java/com/github/kfcfans/powerjob/worker/core/tracker/processor/ProcessorTrackerPool.java b/powerjob-worker/src/main/java/com/github/kfcfans/powerjob/worker/core/tracker/processor/ProcessorTrackerPool.java index bdcd1da6..474d2232 100644 --- a/powerjob-worker/src/main/java/com/github/kfcfans/powerjob/worker/core/tracker/processor/ProcessorTrackerPool.java +++ b/powerjob-worker/src/main/java/com/github/kfcfans/powerjob/worker/core/tracker/processor/ProcessorTrackerPool.java @@ -25,17 +25,12 @@ public class ProcessorTrackerPool { /** * 获取 ProcessorTracker,如果不存在则创建 */ - public static ProcessorTracker getProcessorTracker(Long instanceId, String address, Supplier creator) { + public static synchronized ProcessorTracker getProcessorTracker(Long instanceId, String address, Supplier creator) { ProcessorTracker processorTracker = processorTrackerPool.getOrDefault(instanceId, Collections.emptyMap()).get(address); if (processorTracker == null) { - synchronized (ProcessorTrackerPool.class) { - processorTracker = processorTrackerPool.getOrDefault(instanceId, Collections.emptyMap()).get(address); - if (processorTracker == null) { - processorTracker = creator.get(); - processorTrackerPool.computeIfAbsent(instanceId, ignore -> Maps.newHashMap()).put(address, processorTracker); - } - } + processorTracker = creator.get(); + processorTrackerPool.computeIfAbsent(instanceId, ignore -> Maps.newHashMap()).put(address, processorTracker); } return processorTracker; }