csworkman

个人博客

happens-before之8条

2022-6-7 Mr Chang JUC

  1. 次序规则
     一个线程内,  按照代码顺序,写在前面的操作线性发生于写在后面的操作;
  2. 锁定规则
    一个unLock操作先行发生于后面(这里的“后面”是指时间上的先后)对同一个锁的lock操作
  3. volatile变量规则
    对一个volatile变量的写操作先行发生于后面对这个变量的读操作。前面的写对后面的读是可见的。
  4. 传递规则
    如果操作A先行发生于操作B,操作B先行发生于操作C,则可以得出操作A先行发生于操作C
  5. 线程启动规则(Thread Start Rule)
    线程对象的start方法先行发生与线程里面的每一个操作。
  6. 线程中断规则(Thread interruption Rule
    先调用interrupt()方法设置过中断标志位,我才能检测到中断发送
  7. 线程终止规则(Thread Termination Rule
    线程中的所有操作都先行发生于对此线程的终止检测。可以通过isAlive()检测线程是否已经终止
  8. 对象终结规则(Finalizer Rule)
    一个对象的初始化构造函数完成 先行发生于它的finalize()方法的开始

发表评论: