Java内存模型

Java内存模型(Java Memory Model,JMM),它是一种规范,规范了java虚拟机和计算机内存是如何协同工作,

它规定了一个线程如何、何时可以看到其它线程修改过的共享变量的值,以及在必须时如何同步共享变量。

内存中分为堆和栈,对象存放在堆中,本地变量和方法存放在栈上。计算机一般有多个CPU,一个CPU有时包含多核,

CPU包含了一系列的寄存器,在寄存器上执行运算操作的速度远大于主存的速度,所以在二者之间加入了高速缓存(Cache Memory)
高速缓存的出现,将CPU的运算所使用到的数据赋值到缓存中,让运算能够快速的进行,当运算结束后,再将数据从缓存中同步到主存中。
而在java内存模型中,线程栈和堆会分布在各个位置,主要分布在主存中,部分分布在CPU缓存和寄存器中
每个线程都有自己独立的一个本地内存,它是一个抽象概念,存储了以读或写的共享变量的副本。

java内存模型中的线程工作内存是CPU的寄存器和高速缓存的抽象描述,jvm模型只是对内存的一种物理划分。

同步操作(八个操作):主内存 Lock ->Read -> Load ->工作内存-> Use ->java线程 ->Assign ->工作内存
->Store->Write->主内存->Unlock  (按顺序执行,可以不连续)

并发编程与线程安全:多线程同时运行同一段代码,若每次执行后的结果与单线程执行的结果一致,而且变量值也一样,

那就说明是线程安全的,否则就是线程不安全。

-------------本文结束感谢您的阅读-------------
0%