Java:使用锁时,所有可变变量是否都需要易变?

时间:2010-08-24 01:28:24

标签: java locking concurrency volatile synchronized

以下变量x是否需要是易变的?

或者utils.concurrent锁中的操作是否执行与synchronized块相同的功能(确保它写入内存,而不是存储在cpu缓存中)?

myMethod(){
  myLock.lock();
  x++;
  myLock.unlock();
}

1 个答案:

答案 0 :(得分:4)

如果在没有锁定的情况下访问其他地方,这些变量只需要是易变的。例如,作为对size变量的快速只读访问。锁定方法的作用与同步块的作用相同。请参阅Lock类的javadoc中的“内存同步”部分。