java内存模型---学习笔记
来源:互联网 发布:淘宝买家投诉恶意骚扰 编辑:程序博客网 时间:2024/05/29 14:46
主内存和工作内存
Java内存模型规定了所有的变量都存储在主内存中,每条线程有自己的工作内存。
线程、主内存、工作内存三者的交互关系:
内存间交互操作:
- lock(锁定):作用于主内存的变量,把一个变量标识为一条线程独占的状态
- unlock(解锁):作用于主内存的变量,把一个处于锁定状态的变量释放出来,释放后的变量才可以被其他线程锁定
- read(读取):作用于主内存的变量,把一个变量的值从主内存传输到线程的工作内存中,以便随后的load动作使用
- use(使用):作用于工作内存的变量,把工作内存中一个变量的值传递给执行引擎
- assign(赋值):作用于工作内存的变量,把一个从执行引擎接受到的值赋给工作内存的变量
- store(存储):作用于工作内存的变量,把工作内存中一个变量的值传送到主内存中
- write(写入):作用于主内存的变量,把store操作从工作内存得到的变量的值放入主内存的变量中
内存交互操作:
原子性、可见性
原子性:由Java内存模型来直接保证的原子性变量操作包括read、load、assign、use、store、write,基本数据类型的访问读写是具备原子性的(long和double是例外)。synchronized使用了lock和unlock操作,所以synchronized块之间的操作也具有原子性。
可见性:可见性是指当一个线程修改了共享变量的值,其他线程能够立即得知这个修改。无论是普通变量还是volatile变量都是如此,区别是volatile的特殊规则保证了新值能立即同步到主内存,以及每次使用前立即从主内存刷新。volatile保证了多线程操作时变量的可见性,而普通变量则不能保证这一点。synchronized和final也能够实现可见性。
0 0
- Java内存模型学习笔记
- java内存模型---学习笔记
- java内存模型学习笔记
- Java内存模型学习笔记
- Java内存模型(JMM)学习笔记
- JVM学习笔记之JAVA内存模型
- java内存模型笔记
- Java 内存模型笔记
- java内存模型学习
- Java内存模型学习
- Java多线程设计模式学习笔记 - Java内存模型
- JAVA高并发学习笔记(三) JMM(Java内存模型)
- Java内存模型(深入理解Java虚拟机学习笔记)
- JVM学习笔记1-JAVA内存模型概念
- [学习笔记]Java面向对象思想和内存模型
- JVM学习笔记(一)——Java内存模型
- JVM内存模型(深入理解Java虚拟机学习笔记)
- 深入理解Java虚拟机学习笔记-1.JVM内存模型
- linux下mysql中文乱码(中文问号)解决办法
- NoHttp使用简析——Android网络请求框架(二)
- 快速获取中国省市列表的JSON数据
- [Android] 滑动 View 的原理及处理
- hdu 1015 Safecracker
- java内存模型---学习笔记
- 适配器模式
- Docker+ActiveMQ+MQTT例子
- 没神马,学习使用ShearSdk中
- C#控制台 限制小数点的位数输出
- Android Studio如何发布APK
- spring 6 bean配置--bean的作用域
- Tomcat 基于MSM做Session共享
- 超越之MongDB系列教程(八) MongDB的集合及GridFS