volatile关键字测试

2020-05-17  本文已影响0人  养一只tom猫
public class VolatileTest {
  //volatile
    static boolean flag = false;

    public static void main(String[] args) {
        new Thread(){
            @Override
            public void run() {
                System.out.println("第一个线程开始");
                while (!flag){}
                System.out.println("第一个线程结束");
            }
        }.start();

        try {
            Thread.sleep(100);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        new Thread(){
            @Override
            public void run() {
                System.out.println("flag 已经 等于 true");
                flag = true;
            }
        }.start();
    }

}

此处flag在线程二中更改为true,第一个线程并不会察觉到。
但是加了volatile关键字保证一个内存的可见性,测试结果就和预想一样。

上一篇 下一篇

猜你喜欢

热点阅读