volatile的一点理解

对于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);

}

}

原文地址:https://www.cnblogs.com/jw93/p/6541786.html