// Copyright 2012 Google Inc. All Rights Reserved. package com.google.digitalcoin.utils; import java.util.HashMap; import java.util.Map; import java.util.concurrent.Semaphore; /** * @author miron@google.com (Miron Cuperman) * */ public class NamedSemaphores { private Map<String, Semaphore> lockMap = new HashMap<String, Semaphore>(); public void acquire(String name) throws InterruptedException { Semaphore s = getSemaphore(name); s.acquire(); } public boolean tryAcquire(String name) { Semaphore s = getSemaphore(name); return s.tryAcquire(); } public void release(String name) { Semaphore s = getSemaphore(name); s.release(); } private Semaphore getSemaphore(String name) { synchronized (lockMap) { Semaphore s = lockMap.get(name); if (s == null) { s = new Semaphore(1); lockMap.put(name, s); } return s; } } }