当前位置: 首页 > 后端技术 > Java

Java并发笔记-线程内存模型

时间:2023-04-01 16:14:27 Java

《深入理解java虚拟机》-第五部分高效并发一、Java内存模型模型图:主内存与工作内存交互协议:运算符操作名称作用域锁动作锁主内存识别一个变量为线程独占状态解锁解锁主内存并释放一个处于锁定状态的变量,然后该变量可以被其他线程锁定themainmemory将变量值的变量值放入工作内存的变量副本中useuseusetheworkingmemory将工作内存中的一个变量值传递给工作引擎assignassignmentworkingmemoryassign从执行引擎接收到的变量值totheworkingmemoryvariablestorestoretheworkingmemory一个变量值被传送到主存中,write写入到主存中,并将工作内存中存储的值放入主存变量中。当一个线程修改共享变量的值时,其他站点可以立即知道(volatile、synchronized、final)顺序:如果在这个线程中观察,所有操作都是有序的;如果观察一个线程中的另一个线程,所有操作都是无序的volatile特性:可见性,禁止指令重排;synchronized:一个变量只允许一个线程同时锁定它在其他线程中可以看到。3.Java线程、协程和纤程模型:1:1线程模型(即基于操作系统原生线程模型)调度:抢占式调度状态:State状态名称解释新建线程创建后还未启动Runablerunning包括操作系统线程状态中的Running和Ready。线程可能正在执行,可能正在等待操作系统为其分配执行时间Waitingindefinitelywaitingtobewaitingtobeotherthreadswaitingisaterminatedstate在Terminated结束线程执行完后等待一段时间后