首页 > 应用开发 > > java 多线程-happendBefore
指令重排:代码执行顺序与预期不一致
目的:提高性能
下例代码,结束时可能打印指令重排:**
public class tt {
privatestaticinta=0;privatestaticboolean flag=false;publicstaticvoidmain(String[]args) throws InterruptedException{//线程1更改数据Thread t1=newThread(()->{ a=1; flag=true; });//线程2读取数据Thread t2=newThread(()->{if(flag) { a*=1; }if(a==0) { System.out.println("发生了指令重排"+a); } }); t1.start(); t2.start(); t1.join(); t2.join();}}
©著作权归作者所有:来自51CTO博客作者wx5d21d5e6e5ab1的原创作品
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/2650/viewspace-3165467/ ,如需转载,请注明出处,否则将追究法律责任。