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

Jar*_*sey 5 java concurrency volatile thread-safety

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

我应该申报我的推荐信volatile吗?

Mik*_*e B 5

简而言之,不。

队列变量包含的值是对队列的引用。这个值不会改变,除非你重新分配队列,就像myQueue = otherQueue;如果你创建队列后所做的只是将东西放入和取出东西,那么线程是否有缓存值并不重要,因为该值(对队列)永远不会改变。

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