乐趣区

关于jvm:Java并发编程3并发之synchronized

摘要

之前咱们解说了并发方面的根底跟基本原理;基本原理外面次要是计算机 cpu 多级缓存模型以及多级缓存模型下缓存一致性的计划:总线加锁跟 MESI 缓存一致性原理跟 jvm 为了屏蔽计算机硬件和操作系统,让 Java 程序在各种计算机硬件跟操作系统下能保证数据拜访形式一致性引出了 Java 内存模型;以及因为 Java 的内存模型导致的主内存跟工作内存数据不统一问题;进而引发并发编程须要思考的几大个性:可见性 (某个线程批改主内存外面共享数据时候,其余线程在读取的时候可能立马感知到),原子性 (多线程并发去写批改主内存外面的共享变量的时候,须要保障每一次操作都是不可再分的,主内存数据在某一时候只能由一个线程批改),有序性 (程序代码须要满足 happends-bfore 准则,保障代码执行程序有序)。而后为了解决简略数据比方:标识位数据并发读写问题保障可见性跟有序性的 volatile 关键字;以及底层外围原理。然而针对于多线程并发批改主内存外面共享变量的时候,如何保证数据一致性问题未能解决,这一节咱们次要解说。多线程并发批改主内存外面共享变量的时候保证数据一致性问题。

思维导图

内容

1. 案例引入多线程原子行问题

定义一个变量,此变量是寄存到堆内存的共享变量也就是主内存外面的数据。而后咱们开启多个线程并发去写批改此数据的值,而后再读取此数据的值,而后打印出,最初看一下各个线程数据更改的状况和最终数据的变更状况。

退出移动版