Java内存模型之可见性分析

1. JMM模型描述
  • 给定程序以及一个检测程序是否合法的执行跟踪,JMM工作原理是检查执行跟踪中的每个读,并根据某些规则检查读观察到的写是否有效
  • JMM中可能产生的行为表象现为不论代码是如何实现程序行为,只要保证程序的所有结果执行和JMM预期的结果一致即可
  • 基于上述的第二点,对实现者执行的代码进行转换的实现就比较自由,可以实现操作的重排序甚至删除不必要的同步操作代码
2. JMM之数据共享与竞争

线程共享与独占区域

  • 线程共享区域: JVM运行数据区中的方法区,堆内存存储的数据变量,存在数据竞争,即数据读写的安全问题
  • 线程独占区域: JVM为每个线程单独创建的私有区域,用于存储当前线程私有的数据变量,不存在数据竞争,比如线程局部变量,ThreadLocal/ThreadLocalRandom等
    在这里插入图片描述

线程通信产生数据竞争

  • 简要的源代码
// constant.java
final int P 

猜你喜欢

转载自blog.csdn.net/wind_602/article/details/104041188
今日推荐