使用信号量Semaphore设置容器边界

来源:互联网 发布:多益网络ceo 编辑:程序博客网 时间:2024/05/19 05:37
class BoundedHashSet<T>{private final Set<T> set;private final Semaphore semaphore;public BoundedHashSet(int bound) {set = Collections.synchronizedSet(new HashSet<T>());semaphore = new Semaphore(bound);}public boolean add(T t) throws InterruptedException{semaphore.acquire();boolean wasAdded = set.add(t);if (!wasAdded) {semaphore.release();}return wasAdded;}public boolean remove(T t){boolean wasRemoved = set.remove(t);if (wasRemoved) {semaphore.release();}return wasRemoved;}}





0 0
原创粉丝点击