gpt4 book ai didi

java - Java中有没有只允许peek的阻塞队列?

转载 作者:行者123 更新时间:2023-12-01 13:07:38 25 4
gpt4 key购买 nike

我需要一个大小为 1 的阻塞队列,每次应用 put 时,它都会删除最后一个值并添加下一个值。消费者将是一个线程池,其中每个线程都需要在消息放入队列时读取消息并决定如何处理它,但它们不应该能够从队列中获取消息,因为它们都需要读取从中。

我正在考虑每次生产者发送一条新消息时就进行获取和放置,但是只查看消费者的 run 方法会导致他们不断地查看,不是吗?理想情况下,一旦窥视停止,消息就会消失,但我不想使用定时轮询,因为它不能保证每个消费者都会及时窥视消息。

目前我的另一个选择是迭代消费者集合并使用消息调用它们的公共(public)方法,但我真的不想这样做,因为系统依赖于实时更新,并且大量的如果我要遍历堆栈上的每个方法调用,则集合将需要一段时间才能完全迭代。

最佳答案

经过一番考虑,我认为最好的情况是,每个消费者都有自己的队列,而生产者将其消息放在所有队列上。

  • 如果消费者很少,那么将消息放在这几个队列上不会花费太长时间(除非生产者因为消费者跟不上而阻塞)。
  • 如果有很多消费者,这种情况比许多消费者相互争用的情况要好得多。

至少,这将是比较替代解决方案的一个很好的衡量标准。

关于java - Java中有没有只允许peek的阻塞队列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23147654/

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