《深入理解java虚拟机》-第五部分 高效并发

1、java内存模型
模型图:
内存模型

主内存与工作内存交互协议:

操作符操作名称作用域作用
lock锁定主内存把一个变量标识为一条线程独占状态
unlock解锁主内存把一个处于锁定状态的变量释放出来,之后变量才可其他线程锁定
read读取主内存把一个变量的值从主内存传输到工作内存
load载入工作内存把从主内存read的变量值放入工作内存的变量副本中
use使用工作内存把工作内存中一个变量值传递给工作引擎
assign赋值工作内存把从执行引擎接收的变量值赋给工作内存变量
store存储工作内存把工作内存一个变量值传递到主内存中
write写入主内存把工作内存store过来的值放入主内存变量

2、几个小知识点
原子性:基本数据类型的读写都具备原子性
可见性:当一个线程修改了共享变量值时,其他现场能够立刻得知(volatile、synchronized、final)
有序性:如果在本线程内观察,所有操作都是有序的;如果在一个线程中观察另一个线程,所有操作都是无序的
volatile特性:可见性、禁止指令重排;
synchronized:一个变量在同一时刻只允许一条线程对其进行lock操作
final:被final修饰的字段在构造器中一旦被初始化完成,并且构造器没有把“this”的引用传递出去,那么在其他线程中就能看见final字段的值。
3、java线程、协程和纤程
模型:1:1的线程模型(即基于操作系统原生线程模型实现)
调度:抢占式调度
状态:

状态状态名释义
New新建创建后尚未启动的线程
Runable运行包括操作系统线程状态中的Running和Ready。线程有可能正在执行,有可能正在等待操作系统为它分配执行时间
Waiting无限期等待等待被其他线程显示唤醒
Timed Waiting限期等待限期结束后由操作系统唤醒
Blocked阻塞阻塞是在等着获取排它锁,等待是在等待一段时间
Terminated结束线程结束执行后的已终止态

ciwi
1 声望0 粉丝