以下变量x是否需要是易变的?
或者utils.concurrent锁中的操作是否执行与synchronized块相同的功能(确保它写入内存,而不是存储在cpu缓存中)?
myMethod(){
myLock.lock();
x++;
myLock.unlock();
}
答案 0 :(得分:4)
如果在没有锁定的情况下访问其他地方,这些变量只需要是易变的。例如,作为对size变量的快速只读访问。锁定方法的作用与同步块的作用相同。请参阅Lock类的javadoc中的“内存同步”部分。