package com.atguigu.juc;
/*
-
一、volatile 关键字:可以保证当多个线程同时操作共享数据时,内存是可见的。
-
相较于 synchronized 关键是一种较为轻量级的同步策略。
-
- volatile 不具备“互斥性”
-
- volatile 不能保证变量的原子性
*/
public class TestVolatile {
public static void main(String[] args) {
VolatileDemo vd = new VolatileDemo();
new Thread(vd).start();while(true){ if(vd.isFlag()){ System.out.println("--------------------"); break; } }
}
- volatile 不能保证变量的原子性
}
class VolatileDemo implements Runnable{
private volatile boolean flag = false;
@Override
public void run() {
try {
Thread.sleep(200);
} catch (InterruptedException e) {
}
flag = true;
System.out.println("flag=" + isFlag());
}
public boolean isFlag() {
return flag;
}
public void setFlag(boolean flag) {
this.flag = flag;
}
}