JMM
来源:互联网 发布:局域网可以共享网络吗 编辑:程序博客网 时间:2024/05/10 07:22
- JMM是什么
JMM(Java Memory Model)是Java内存模型,JMM定义了程序中各个共享变量的访问规则,即在虚拟机中将变量存储到内存和从内存读取变量这样的底层细节.
- 为什么要设计JMM
屏蔽各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的内存访问效果.
- 为什么要理解JMM
理解JMM是理解并发问题的基础.
- 主内存,工作内存和线程三者的交互关系
JMM规定了共享变量都存储在主内存中.每条线程还有自己的工作内存,线程的工作内存保存了主内存的副本拷贝,对变量的操作在工作内存中进行,不能直接操作主内存中的变量.不同线程间无法直接访问对方的工作内存变量,需要通过主内存完成。如下图:
- 主内存与工作内存交互协议
JMM定义了8中操作来完成主内存与工作内存的交互。虚拟机保证每种操作都是原子的,不可再分的.8种操作分别是
lock,unlock,read,load,use,assign,store,write.
把一个变量复制到工作内存,就要顺序的执行read和load操作,从工作内存同步会主内存,就要顺序的执行store和write操作.
对一个变量执行lock操作,将会清空工作内存中此变量的值,在使用前,需要重新执行load或assign操作初始化变量的值
对一个变量unlock操作前,必须先将此变量同步会主内存.
工作内存中的volatile变量在每次使用前要刷新,执行引擎看不到不一致的情况,volatile还禁止指令重排序.
1 0
- JMM
- JMM
- JMM
- JMM
- JMM
- JMM
- JMM
- JMM模型
- java jmm
- JMM介绍
- 【Java.JMM】
- Java JMM
- JMM简介
- JMM导读
- java JMM
- JMM浅析
- JMM简介
- JMM浅析
- KK's Number
- c#之异常之线程访问控件
- java
- UIButton 字体居左
- 【水题算法】斐波那契数列的应用
- JMM
- Android系统架构
- <LeetCode OJ> 228. Summary Ranges
- HDOJ 2100 Lovekey
- Java设计模式(二十)----状态模式
- 跳转界面的处理
- HDOJ 2101 A + B Problem Too
- android 注解框架 butterKnife 和AndroidAnnotations
- Java注解