Java多线程---happens-before到底是啥

看了几篇博客关于重排序的博客,记录一下关于happens-before的知识点

happens-before

八大原则

  1. 程序次序法则: 线程中的每个动作A都happens-before于该线程的每一个动作B
  2. 监视器锁法则: 对一个监视器的解锁都happens-before于每一个后续对同一监视器的加锁
  3. volatile变量法则: 对volatile域的写入操作都happens-before于每一个后续对同一个域的读写操作
  4. 线程启动法则: 在一个线程里,对Thread.start的调用会happens-before于每个线程的启动的动作
  5. 线程终结法则: 线程中的任何动作都happens-before于其他线程检测到这个线程已经终结、或者从Thread.join调用中成功返回,或Thread.isAlive返回false。
  6. 中断法则: 一个线程调用另一个线程的中断都happens-before于被中断线程发现中断
  7. 终结法则: 一个对象的构造函数的结束happens-before于这个对象的finalizer的开始
  8. 传递性: 如果A happens-before B,B happens-before C,那么A happens-before C

猜你喜欢

转载自blog.csdn.net/MarkusZhang/article/details/106193109