为什么java.util.concurrent.LinkedBlockingQueue有一个head和tail参考作为非volatile?
一个线程中head或tail在一个线程中的任何更改可能对另一个线程不可见,因此会导致问题吗?
在head和tail将要被看守putLock或takeLock.只要您进行适当的同步,就不需要将字段声明为volatile.
所以,回答你的问题.volatile如果它们正确同步(它们是),则不需要这些字段.
如果您发现有一部分代码存在疑问,请告诉我,否则我找不到任何他们需要易变的原因.
| 归档时间: |
|
| 查看次数: |
285 次 |
| 最近记录: |