专业的JAVA编程教程与资源

网站首页 > java教程 正文

第三章 java内存模型与并发三大特性

temp10 2024-10-07 15:42:59 java教程 13 ℃ 0 评论

内存模型简介

JMM(java内存模型Java Memory Model)本身是一种抽象的概念,描述的是一组规则或规范。通过这组规范定义了程序中各个变量的访问方式。Java本身的运行是基于虚拟机的,在虚拟机的规范中,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

并发三大特性

* 原子性

原子本意是不能再进一步分割的最小粒子,而原子操作就是一个不可中断操作。

1.处理器

是通过对总线锁或者缓存锁进行锁定保证原子性

2.java

可以通过锁或者CAS方式来实现原子操作

  • 有序性

1.通过volatile 修改,来实现,原理通过内存屏障实现

2.通过锁,来实现 例如synchronized

  • 可见性

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表