1、volatile的特性
可见性:对一个volatile变量的读,总能够看到任意一个线程对这个volatile变量的写入。
原子性:对任意单个volatile变量的读/写具有原子性,但类似于volatile++这种复合操作不具有原子性。
接下来我们用程序验证。
public class OldVolatileFeaturesExample {
volatile long v1 = 0L; // 使用volatile 声明64位的long型变量
//long v1 = 0L;
public void set(long l){
v1 = l; //单个volatile 变量的写
}
public void getAndIncrement(){
v1++; // 多个volatile 变量的读/写
}
public long get(){
return v1; // 单个volatile 变量的读
}
public static void main(String[] args) {
final OldVolatileFeaturesExample volatileFeaturesExamlple = new OldVolatileFeaturesExample();
Thread thread0 = new Thread(new Runnable() {
public void run() {
volatileFeaturesExamlple.set(1L);