摘要

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

思维导图

内容

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

定义一个变量,此变量是存放到堆内存的共享变量也就是主内存里面的数据。然后我们开启多个线程并发去写修改此数据的值,然后再读取此数据的值,然后打印出,最后看一下各个线程数据更改的情况和最终数据的变更情况。


startshineye
91 声望26 粉丝

我在规定的时间内,做到了我计划的事情;我自己也变得自信了,对于外界的人跟困难也更加从容了,我已经很强大了。可是如果我在规定时间内,我只有3分钟热度,哎,我不行,我就放弃了,那么这个就是我自己的问题,因为你自己...


引用和评论

0 条评论