对于volatile的理解,我想通过代码来表达。
public class VolatileExample {
private volatile long data;
public void setData(long newData){
data = newData;//对于volatile变量的写
}
public long getData(){
return data;//对于volatile变量的读
}
public void increseData(){
data++;//对于volatile变量的复合操作
}
}
等价于下面这个类:
public class VolatileExampleNew {
private volatile long data;
public synchronized void setData(long newData){
data = newData;//对于volatile变量的写
}
public synchronized long getData(){
return data;//对于volatile变量的读
}
public void increseData(){
long temp = getData();
temp+=1l;
setData(temp);
}
}