繁体   English   中英

我应该声明java.util.concurrent.ConcurrentLinkedQueue引用volatile吗?

[英]Should I declare java.util.concurrent.ConcurrentLinkedQueue references volatile?

我正在使用java.util.concurrent.ConcurrentLinkedQueue对象在线程之间传递数据。

我应该声明我的引用是否volatile

简而言之,没有。

队列变量包含的值是对队列的引用。 除非您像myQueue = otherQueue;一样重新分配队列,否则此值不会更改myQueue = otherQueue; 如果你正在做的就是你创建队列就是把事情放进去并把事情拿出去,那么线程是否有缓存值并不重要,因为值(对队列的引用)永远不会改变。

最好将所有变量设为最终,除非你需要它不是最终变量。

不,因为您总是使用相同的队列。 易失性意味着内存中变量的值对于每个处理器总是相同的。 请注意,即使将变量声明为volatile,也不会同步存储在寄存器中的变量。

如果您可以将其声明为final,则将其声明为final。 如果你不能,宣布它是不稳定的。

声明它不稳定对Queue的内部结构没有影响。 它只在分配new ConcurrentLinkedQueue()时添加了额外的同步

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM