用volatile来实现可见性,一个负责读,另一个负责写。

犹豫 参见多线程实现的单例模式,双重检查锁,指令重排发生在构造函数和对内存赋值之间。

为了提高CPU吞吐率,我们会做指令重排下面的f2中,一旦发生指令重拍,r就可能变为0

happens-before 规定了对共享变量的写操作对其他线程的读操作可见。线程解锁m前对变量的写,对于接来下对m加锁的其他线程可见,对volatile的写对其他线程的读可见,start之前对变量的写,对其可见,线程结束前对变量的写,对其他线程得知他结束后可见,线程t1打断t2前对变量的写,对于其他线程得知t2被打断后对变量的读可见对变量的默认值的写,对其他线程可见,还有屏障也能保证

版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!