码迷,mamicode.com
首页 > 编程语言 > 详细

Java中指令重排

时间:2019-08-20 00:50:54      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:read   代码   start   读取   执行顺序   联系   int   指令   ati   

/**
 * 指令重排:代码执行顺序与预期不一致 (发生在前后行代码无联系时)
 * 目的:提高性能
 *
 */
public class HappenBefore {
    private static int a=0;
    private static boolean flag=false;
    
    public static void main(String[] args) throws InterruptedException {
        for(int i=0;i<10;i++) {
            a=0;
            flag=false;
            
            //线程一:更改数据
            Thread t1=new Thread(()->{
                a=1;
                flag=true;
            });
            //线程二:读取数据
            Thread t2=new Thread(()->{
                if(flag){
                    a*=1;
                }
                //指令重排
                if(a==0){
                    System.out.println("happen-before->"+a);
                }
            });
            t1.start();
            t2.start();
            
            t1.join();
            t2.join();
            
        }
    }
}

Java中指令重排

标签:read   代码   start   读取   执行顺序   联系   int   指令   ati   

原文地址:https://www.cnblogs.com/ccbTony/p/11380632.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!