volatile示例
- public class Test {
-
- volatile int a = 1;
- volatile boolean ready;
-
- public class PrintA extends Thread{
- @Override
- public void run() {
- while(!ready){
- Thread.yield();
- }
- System.out.println(a);
- }
- }
- public static void main(String[] args) throws InterruptedException {
- Test t = new Test();
- t.new PrintA().start();
- //下面两行若是不加volatile的话,执行的前后顺序是不可预测的。而且下面两行都是原子操做,可是这两行做为一个总体的话就不是一个原子操做。
- t.a = 48; //这是一个原子操做,可是其结果不必定具备可见性。加上volatile后就具有了可见性。
- t.ready = true;//同理
- }
-
- }
欢迎关注本站公众号,获取更多信息