网站开发命名规范,网站项目意义,网络营销平台的类型,苏州网站外包Java 内存区域
引言#xff1a;
在并发编程中#xff0c;需要解决两个问题#xff1a;线程之间如何通信和线程之间如何同步
通信是指线程之间以何种机制来交换信息
在命令式编程中#xff0c;通信机制主要分为两种#xff1a;共享内存和消息传递
Java 的并发采用的是…Java 内存区域
引言
在并发编程中需要解决两个问题线程之间如何通信和线程之间如何同步
通信是指线程之间以何种机制来交换信息
在命令式编程中通信机制主要分为两种共享内存和消息传递
Java 的并发采用的是共享内存模型
1、哪些内容受 JMM 影响哪些不受
在 Java 中所有的实例域、静态域和数组元素都存储在堆内存中堆内存在线程之间共享。
而方法定义参数、局部变量和异常处理参数不会再线程之间共享也就不受 JMM 影响。
受 JMM 影响的区域
堆内存也就是 实例域、静态域、数组元素
2、JMM 的作用
JMM 决定一个线程对共享变量的写入何时对另一个线程可见。
JMM 抽象了线程和主内存间的关系
主内存中存储的有用来读/写的共享变量线程中存储的有共享变量的副本也就是本地内存。
如果线程 A 要给线程 B 进行通信的话要经过两个必要步骤
线程 A 把更新后的值重新刷会主内存。线程 B 从主内存中重新拿取最新值
JMM 通过控制主内存与每个线程的本地内存间的交互来为 Java 程序员提供内存可见性的保证。
3、JMM 是如何做到可见性的保证
JMM 的编译器重排序规则会禁止特定类型的编译器重排序不是所有的编译器重排序都要禁止。对于处理器重排序JMM 的处理器重排序规则会要求 Java 编译器在生成指令序列时插入特定类型的内存屏障Memory BarriersIntel称之为 Memory Fence指令通过内存屏障指令来禁止特定类型的处理器重排序。