import java.util.concurrent.LinkedBlockingQueue;
public class MyCustomQueue {
private LinkedBlockingQueue<Element> queue = new LinkedBlockingQueue<>();
public void addElement(Element element) {
synchronized (queue) {
for (Element e : queue) {
if (e.getId() == element.getId()) {
queue.remove(e); // 移除已存在的元素
break;
}
}
queue.add(element); // 添加新元素
}
}
public void startConsumers(int numConsumers) {
for (int i = 0; i < numConsumers; i++) {
new Thread(() -> {
while (true) {
try {
Element element = queue.take();
consumeElement(element);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
}).start();
}
}
private void consumeElement(Element element) {
// 消费元素的代码,根据实际需求自行实现
System.out.println("Consumed element with ID: " + element.getId());
}
}
class Element {
private int id;
public Element(int id) {
this.id = id;
}
public int getId() {
return id;
}
}
堵塞队列去重并发消费
最新推荐文章于 2024-05-24 10:07:10 发布