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,17 +25,12 @@ public class ProcessorTrackerPool {
|
|||||||
/**
|
/**
|
||||||
* 获取 ProcessorTracker,如果不存在则创建
|
* 获取 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);
|
ProcessorTracker processorTracker = processorTrackerPool.getOrDefault(instanceId, Collections.emptyMap()).get(address);
|
||||||
if (processorTracker == null) {
|
if (processorTracker == null) {
|
||||||
synchronized (ProcessorTrackerPool.class) {
|
processorTracker = creator.get();
|
||||||
processorTracker = processorTrackerPool.getOrDefault(instanceId, Collections.emptyMap()).get(address);
|
processorTrackerPool.computeIfAbsent(instanceId, ignore -> Maps.newHashMap()).put(address, processorTracker);
|
||||||
if (processorTracker == null) {
|
|
||||||
processorTracker = creator.get();
|
|
||||||
processorTrackerPool.computeIfAbsent(instanceId, ignore -> Maps.newHashMap()).put(address, processorTracker);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return processorTracker;
|
return processorTracker;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user