第三章 java内存模型与并发三大特性
发布时间:2023年12月31日
内存模型简介
JMM(java内存模型Java Memory Model)本身是一种抽象的概念,描述的是一组规则或规范。通过这组规范定义了程序中各个变量的访问方式。Java本身的运行是基于虚拟机的,在虚拟机的规范中,Java定义了一种内存模型,来屏蔽掉硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的内存访问效果。Java 线程之间的通信由 Java 内存模型控制的,下图就是java内存模型的抽象结构
内存模型的组成
- 主内存:就是各个线程共享的序曲,对应着jvm虚拟机堆区
- 本地内存:这个区域就是每个线程独有区域,不同线程不能相互访问,对应着jvm虚拟机栈
- 工作方式:
线程A把本地内存A中更新过的共享变量刷新到主内存
线程B到主内存中去读取线程A之前已更新过的共享变量
内存模型在保证有序性时的两个原则
- as-if-seria
不管如何重排序,单线程程序的执行结果不能被改变 - happens-before
在jmm中,如果一个操作执行的结果需要对另一个操作可见,那么这两个操作之间必须存在happers-before关系
1.程序顺序规则
一个线程中的每个操作,happens-before 于该线程中的任意后续操作
2.监视器锁规则
对一个锁的解锁,happens-before于随后对这个锁的加锁
3.volatile变量规则
对一个volatile域的写,happens-before 于任意后续对这个volatile域的读
4.传递性
如果A happens-before B,且 B happens-before C ,那么 happens-before C
并发三大特性
文章来源:https://blog.csdn.net/GZ946/article/details/135320208
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:chenni525@qq.com进行投诉反馈,一经查实,立即删除!