线程间内存可见性问题
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| public class TestVolatile { public static void main(String[] args){ ThreadDemo threadDemo=new ThreadDemo(); new Thread(threadDemo).start(); while (true){ if(threadDemo.getFlag()){ System.out.println(Thread.currentThread().getName()+threadDemo.getFlag()+"========"); } } } } class ThreadDemo implements Runnable{ private Boolean flag=false; public Boolean getFlag() { return flag; } public void setFlag(Boolean flag) { this.flag = flag; } @Override public void run() { try { Thread.sleep(2000); flag=true; } catch (InterruptedException e) { e.printStackTrace(); } if(flag){ System.out.println(Thread.currentThread().getName()+flag+"======"); } } }
|
==运行结果如下==

主线程中始终不会输出此时就出现了线程间的内存可见性问题
