in src/main/java/com/epam/eco/commons/concurrent/ResourceSemaphores.java [35:51]
public ResourceSemaphore<K, O> createSemaphore(K key, O operation) {
lock.writeLock().lock();
try {
Set<ResourceSemaphore<K, O>> resourceSemaphores = semaphores.get(key);
if (resourceSemaphores == null) {
resourceSemaphores = Collections.newSetFromMap(new IdentityHashMap<>());
semaphores.put(key, resourceSemaphores);
}
ResourceSemaphore<K, O> semaphore = new ResourceSemaphore<>(this, key, operation);
resourceSemaphores.add(semaphore);
return semaphore;
} finally {
lock.writeLock().unlock();
}
}