java volatile关键字可见性

    科技2022-07-17  126

    原始代码

    public class VolatileDemo extends Thread { public boolean flag = true; public void setFlag(boolean flag) { this.flag = flag; } @Override public void run() { System.out.println("===start==="); try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } setFlag(false); } public static void main(String[] args) { VolatileDemo volatileThread = new VolatileDemo(); volatileThread.start(); System.out.println("flag值:"+volatileThread.flag); System.out.println("===end==="); while (volatileThread.flag) { } } }

    循环无法退出

    添加volatile关键字

    public volatile boolean flag = true;

    Processed: 0.012, SQL: 8