package com.rx.wwx;
import java.util.HashSet;
import java.util.Random;
import java.util.Set;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Semaphore;
public class BlockingSet<T> {
private final Set<T> set;
private final Semaphore semaphore;
private int capacity;
public BlockingSet(Set<T> set, int capacity) {
this.set = set;
semaphore = new Semaphore(capacity);
this.capacity = capacity;
}
public boolean add(T t) throws InterruptedException {
semaphore.acquire();
boolean add = set.add(t);
if (!add) {
semaphore.release();
}
return add;
}
public boolean remove(T t) {
boolean remove = set.remove(t);
if (remove) {
semaphore.release();
}
return remove;
}
public void removeAll() {
Java并发编程实践:利用信号量实现阻塞集合demo
本文通过一个示例介绍了如何在Java并发编程中使用信号量(Semaphore)来实现阻塞集合,详细解释了信号量的概念及其在多线程同步中的应用。
摘要由CSDN通过智能技术生成