Java并发编程(一)——并发基础

  1. CPU多级缓存
  2. Java内存模型
  3. 并发的优势与风险

CPU多级缓存
为什么会有CPU多级缓存?
CPU的处理速度远远大于主内存的IO速度,为了利用计算能力,引入了缓存解决CPU处理速度和主内存IO速度的不匹配问题,由此形成了主内存->缓存->CPU的三层结构。
CPU缓存有什么意义?
1. 时间局部性:如果某个数据被访问,那么在不久的将来它很可能被再次访问。
2. 空间局部性:如果每个数据被访问,那么与它相邻的数据很快也可能被访问。

CPU多级的缓存——一致性(MESI)
用于保证多个cpu缓存之间缓存共享数据的一致。
四种状态和四种操作。
M:(被修改)该缓存行只能保存在该CPU的缓存行,是被修改过的,与主内存的数据不一致。需要在其他CPU读取该值前写回主内存,写回后转换为E状态、
E:(独享)未被修改过,可以被任何变成共享,也可以变成修改
S:共享。当被修改时,其他CPU作废,编程invalid。
I:被修改过。

这里写图片描述
CPU多级的缓存——乱序执行优化
处理器为了提高运算速度,会对原有代码在不违背执行结果的情况下进行重排序优化,有依赖关系的代码不会执行重排序,比如:。标记变量会改变多线程的执行结果。
Java内存模型:
规范了Java虚拟机和计算机内存如何协同工作。规定了一个线程如何和何时看到其他线程修改的共享变量,以及在必需时如何同步的访问共享变量。
这里写图片描述


参考资料:
【1】https://coding.imooc.com/class/195.html
【2】《Java并发编程的艺术》

猜你喜欢

转载自blog.csdn.net/u014413083/article/details/80723256