mirror of
https://github.com/PowerJob/PowerJob.git
synced 2025-07-17 00:00:04 +08:00
fix: concurrency safety in ProcessotTrackerPool
This commit is contained in:
parent
b4f92bbc25
commit
9db9d0d01f
@ -25,18 +25,13 @@ public class ProcessorTrackerPool {
|
||||
/**
|
||||
* 获取 ProcessorTracker,如果不存在则创建
|
||||
*/
|
||||
public static ProcessorTracker getProcessorTracker(Long instanceId, String address, Supplier<ProcessorTracker> creator) {
|
||||
public static synchronized ProcessorTracker getProcessorTracker(Long instanceId, String address, Supplier<ProcessorTracker> 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
return processorTracker;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user