gpt4 book ai didi

java - concurrentLinkedQueue 提供/轮询阻塞

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:39:07 26 4
gpt4 key购买 nike

offer blocks poll 还是相反?意思是,生产者可以提供报价,同时消费者可以尝试投票吗?或者如果生产者提供,队列阻塞直到他完成?

对象A

  while (true){
inputQueue.offer(newPartList);
}

对象B

     while (true){
inputQueue.poll(newPartList);
}

最佳答案

不,它没有。使用 LinkedBlockingDeque反而。请记住使用来自 BlockingDequeue 的方法或 BlockingQueue获取值的接口(interface)。因为这些方法是作为阻塞实现的。

更新

offerpoll 方法都不是阻塞的。在链接接口(interface)中,只有 put*take* 方法被实现为阻塞。只要队列已满,put 就会阻塞,如果队列为空,take 就会阻塞。

现在我明白你在问别的问题了。在 LinkedBlockingDeque调用 offer 会阻塞 poll,因为此实现具有用于同步访问的内部 Lock。在 ConcurrentLinkedQueue's JavaDoc 明确指出:

此实现采用了一种高效的“无等待”算法,该算法基于 Simple, Fast, and Practical Non-Blocking and Blocking Concurrent Queue Algorithms 中描述的算法。 由 Maged M. Michael 和 Michael L. Scott 编写。

这表明这些操作不会相互阻塞。如果您有兴趣,我强烈建议您阅读该论文以获得更多见解。

关于java - concurrentLinkedQueue 提供/轮询阻塞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23056659/

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