gpt4 book ai didi

java - ConcurrentLinkedQueue 问题

转载 作者:行者123 更新时间:2023-11-30 06:00:03 25 4
gpt4 key购买 nike

您能否澄清一下,我们是否需要使用显式同步或锁来使用 ConcurrentLinkedQueue?我特别想知道以下 ConcurrentLinkedQueue 方法是否需要同步调用。

  • 添加
  • 清除
  • 尺寸

可能 size 是唯一可能需要显式同步的方法,因为它不是原子方法,但 ConcurrentLinkedQueue java 文档说

"Beware that, unlike in most collections, the size method is NOT a constant-time operation. Because of the asynchronous nature of these queues, determining the current number of elements requires a traversal of the elements. "

这让我相信虽然大小调用可能很慢,但它不需要任何显式同步调用。

提前致谢...

最佳答案

clear() 不是原子操作(它在 AbstractQueue 类中实现),正如 Javadoc 和源代码所说:“此实现重复调用 poll 直到返回 null。”。 poll 是原子的,但是如果你在clear()正在进行时使用offer,你会在清除过程中添加一些东西,而clear()会删除它......

如果您要使用clear(),您应该使用LinkedBlockingQueue 而不是ConcurrentLinkedQueue。

关于java - ConcurrentLinkedQueue 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2020662/

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