假设您有以下代码:
private Object lockObject = new Object();
private Integer myValue = new Integer(0);
public void update(){
synchronized(lockObject){
System.out.println(myValue);
myValue++;
}
}
现在,myValue
既没有synchronized
开启也没有标记volatile
。但是,改变它的唯一方法是使用update()
方法。DZone在核心 java 并发上的 refcard 说,所有线程都可以看到对同步块中的字段的更新。我不确定这是否意味着仅同步对象(lockObject)或任何字段(如 myValue)。
谁能详细说明这一点?谢谢!