原文链接《并发编程的艺术》
JavaGuide
这 8 种操作都是原子性的。它定义了和我们内存的交互的方式。
- lock(锁定):作用于主内存的变量,把一个变量标识为一条线程独占状态。
- read(读取):作用于主内存变量,把一个变量值从主内存传输到线程的工作内存中,以便随后的load动作利用
- load(载入):作用于工作内存的变量,它把read操作从主内存中得到的变量值放入工作内存的变量副本中。
- use(利用):作用于工作内存的变量,把工作内存中的一个变量值传递给执行引擎,每当假造机遇到一个需要利用变量的值的字节码指令时将会执行这个操作。
- assign(赋值):作用于工作内存的变量,它把一个从执行引擎接收到的值赋值给工作内存的变量,每当假造机遇到一个给变量赋值的字节码指令时执行这个操作。
- store(存储):作用于工作内存的变量,把工作内存中的一个变量的值传送到主内存中,以便随后的write的操作。
- write(写入):作用于主内存的变量,它把store操作从工作内存中一个变量的值传送到主内存的变量中。
- unlock(解锁):作用于主内存变量,把一个处于锁定状态的变量释放出来,释放后的变量才可以被其他线程锁定。
CPU 处理器在执行的时候有一个优化执行的过程,利用内存屏蔽来防止我们的编译器和处理器的指令重排序。 线程在访问内存的时候,有一个工作内存。工作内存对于每一个 CPU 来说,是一块完全独立的缓存空间。如果一个线程去加载一个共享变量的话,它会首先去工作内存中去加载,如果不存在的话,它会去主内存去加载。Load 放到我们工作内存里边。 JMM 定义的一套抽象模型的统一规范。它是把底层的差异化通过 JMM 来进行规范。我们不管底层的 CPU 架构是什么样子,不管体系是什么样子,它都可以大概在 JMM 中做不同的处理。
( 就是头里边的 JavaThread. )
欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) | Powered by Discuz! X3.4 |