多线程专家

Java内存屏障

2018-04-02  本文已影响41人  dduang

背景

Java内存模型定义了8种原子操作:

  1. lock:锁住某个主存地址,为一个线程占用
  2. unlock:释放某个主存地址,允许其他线程访问该地址的数据
  3. read:将主存的值读取到工作内存
  4. Load:将read读取的值保存到工作内存的变量副本
  5. use:将值传递给线程的代码执行引擎
  6. assign:将执行引擎的处理返回的值重新赋值给变量副本
  7. Store:将变量副本的值刷新到主存
  8. write:将store存储的值写入到主内存的共享变量中

说明:

  1. 工作内存:可以理解成CPU的local memory,也就是CPU的寄存器
  2. 变量副本:可以理解成JVM stack(JVM 寄存器)
    所以= = store和write的区别是什么= =

指令

其他

内存屏障影响的是同一个线程内的代码的执行顺序。

上一篇 下一篇

猜你喜欢

热点阅读