多线程编程

王大爷 2020年09月28日 433次浏览

JMM https://zhuanlan.zhihu.com/p/29881777 https://www.cnblogs.com/keeya/p/9260565.html

学习博客 https://www.cnblogs.com/keeya/p/9260565.html

什么是JMM?

JMM抽象示意图

什么时候工作内存中变量最新的值会被刷回主内存,时间是不确定的,所以很可能会导致,明明一个线程已经执行了变量的修改操作,另一个线程取得的变量值却还是旧的,这时候可以使用volatile关键字,它的效果之一就是,工作内存中的共享变量一旦修改结束,就会立即将该变量刷新回主内存。

CAS: Compare and Swap

比较并设置。用于在硬件层面上提供原子性操作。在 Intel 处理器中,比较并交换通过指令cmpxchg实现。 比较是否和给定的数值一致,如果一致则修改,不一致则不修改。