下面的变量 x 是否需要可变?
或者 utils.concurrent 锁中的操作执行与同步块(synchronized block)相同的功能(确保它被写入内存,而不是存储在 cpu 缓存中)?
myMethod(){
myLock.lock();
x++;
myLock.unlock();
}
最佳答案
只有在没有锁的情况下在别处访问这些变量时,这些变量才需要是可变的。例如,作为对大小变量的快速只读访问。 lock 方法确实起到与同步块(synchronized block)相同的作用。请参阅 Lock 的 javadoc 中的“内存同步”部分类。
关于Java:使用锁时是否所有可变变量都需要可变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3552956/