log以e为底10为底的1.869为多少

拍照搜题秒出答案,一键查看所有搜题记录

拍照搜题秒出答案,一键查看所有搜题记录

volatile写:当写一个volatile变量的时候JMM会把這个线程的本地内存中的共享变量全部刷新到主内存。注意是全部,而不是仅仅volatile变量
volatile读:当读一个volatile变量的时候JMM会将这个线程的本地内存置为无效,然后从主内存中读取共享变量

以上两步一起来看的话,读线程在读一个volatile变量的时候写线程在写这个volatile变量之前的所有对共享变量的操作都会立即变得对读线程可见。

之前说到过重排序分为编译器和处理器重排两种。为了实现volatile的语义呢JMM会限制这两种重排序。

  1. 后一个操作的volatile写的时候不管前一个操作是什么,都不能重排序
  2. 前一个操作是volatile读的时候,不管后一个操作是什么都不能重排序。
  3. 前┅个操作volatile写后一个操作volatile读,不能重排序

编译器在生成字节码的时候,会在指令序列中插入内存屏障来禁止特定类型的处理器重排序

我要回帖

更多关于 log以10为底 的文章

 

随机推荐