gpt4 book ai didi

java - 单个项目生产者-消费者。我可以在 Java 中使用哪种数据结构?

转载 作者:行者123 更新时间:2023-12-01 14:10:41 25 4
gpt4 key购买 nike

我想要一个生产者消费者问题,其中仅应消耗最新的项目。这个问题可能有不同的名称,但我无法弄清楚!

生产者线程通过覆盖任何旧项目以非阻塞方式生产元素。单个消费者线程应该等待一个元素被创建并消费它。

我考虑过使用阻塞队列,但 java 实现不允许覆盖旧元素。循环缓冲区(例如来自公共(public)库的缓冲区)也不起作用,因为它不会阻塞消费者。

是否有一个数据结构可以用于此目的,或者我是否需要找到更好的方法?

也可以使用锁等低级同步工具来解决这个问题,但我不知道如何做到这一点。

最佳答案

不需要特殊的数据结构。只需使用Object中可用的方法即可。他们在这种情况下表现得很好,因为阻塞消费者:

class ItemHolder<T> {
private T item;
public synchronized void produce(T item) {
this.item = item;
notify();
}
public synchronized T consume() {
while (item == null) {
wait();
}
T result = item;
item = null;
return result;
}
}

关于java - 单个项目生产者-消费者。我可以在 Java 中使用哪种数据结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18548371/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com