/**
 * 指令重排:代码执行顺序与预期不一致 (发生在前后行代码无联系时)
 * 目的:提高性能
 *
 */
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();

        }
    }
}

最新文章

  1. H5 video的使用
  2. c#的问号?和双问号??
  3. Codeforces 741A:Arpa&#39;s loud Owf and Mehrdad&#39;s evil plan(LCM+思维)
  4. C++ ASSERT() 断言机制
  5. JavaScript总结(二) 系统分析
  6. Java中的工具类和新特性
  7. jquery 操作listbox 左右相互选择
  8. 使用layui-tree美化左侧菜单,点击生成tab选项
  9. QT出现应用程序无法正常启动0xc000007b的错误
  10. tiny6410 烧写uboot 转载
  11. mysql null 相关bug
  12. PHP获取时间戳和微秒数以及生成唯一ID
  13. 3D数学读书笔记——矩阵基础
  14. [清华集训2017]榕树之心[树dp]
  15. Android开发中遇到的问题(一)——Android模拟器端口被占用问题的解决办法
  16. 解决IDEA查看源码时提示:Library source does not match the bytecode for class的问题分析
  17. docker内存和cpu调试
  18. 【FTP资源】发现一个ArcGIS相关的FTP。
  19. [hadoop读书笔记] 第十五章 sqoop1.4.6小实验 - 数据在mysq和hdfs之间的相互转换
  20. Macbook pro睡眠状态恢复后没声音的解决办法

热门文章

  1. thinkphp 插件
  2. .net持续集成sonarqube篇之 sonarqube与jenkins集成(命令模式)
  3. SQL Server 插入数据时自增长列如何指定数值
  4. poj 1455 Crazy tea party
  5. 曹工杂谈:Linux服务器上,Spring Boot 原地修改 jar 包配置文件/替换class文件,免去重复上传的麻烦
  6. 集合(Collection解析 Set List Map三大集合运用)
  7. sqoop增量导数据
  8. 后端基于方法的权限控制--Spirng-Security
  9. 【精选】Markdown 语法汇总
  10. 聊聊目标管理之 OKR