public ResourceSemaphore createSemaphore()

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();
        }
    }