并发(JMM综述)
JMM综述 文章目录 JMM综述 一,内存模型产生背景 二,内存模型概念 2.1JMM组成部分 2.2JVM内存操作的并发问题 2.3内存交互操作流程 三,JMM深入 3.1原子性,可见性和有序性 3.2happens-before 3.3内存屏障 3.3重排序 四,volatile 4.1volatile内存语义 4.2volatile特性 4.3volatile如何禁止指令重排序 五,synchronize 六,final 一,内存模型产生背景 由于计算机的存储设备与处理器的运算速度有几个数量级的差距,为了避免处理器等待缓慢的内存读写操作完成,现代计算机系统通过加入一层读写速度尽可能无限接近处理器运算速度的高速缓存 缓存作为内存和cpu之间的缓冲区,将运算需要用到的数据放入到高速缓存中,让运算能快速运行,运算结束后在从缓存同步回内存之中 类似redis缓存和数据库一样,引入了高速缓存虽然解决了处理器和内存速度的差异,但是却带来一个新的问题-----缓存一致性问题 在多核处理器的系统中,每个处理器都有自己的高速缓存,他们共享同一内存,当多个处理器的运算任务都涉及同一块内存区域时,可能会出现缓存数据不一致的问题,需要使用缓存一致性协议来维护缓存的一致性 二,内存模型概念 java虚拟机提供java内存模型(JMM)来 屏蔽掉各种硬件和操作系统的内存访问差异 ,以实现