title: Happens-before规则
author: future
top: true
cover: false
coverImg: /medias/featureimages/11.jpg
toc: true
mathjax: false
summary: Happens-before规则
categories:

  • Hexo

tags:

  • Github Actions
  • 持续集成
  • 语雀
  • Hexo
  • CI/CD

urlname: Happens-before

date: 2020-03-02 23:15:33

img:

password:

updated:


Happens-before规则

Happens-before规则来规范线程的执行顺序:

  • 程序次序规则:在单线程中,代码的执行是有序的,虽然可能会存在运行指令的重排序,但最终执行的结果和顺序执行的结果是一致的;
  • 锁定规则:一个锁处于被一个线程锁定占用状态,那么只有当这个线程释放锁之后,其它线程才能再次获取锁操作;
  • volatile变量规则:如果一个线程正在写volatile变量,其它线程读取该变量会发生在写入之后;
  • 线程启动规则:Thread对象的start()方法先行发生于此线程的其它每一个动作;
  • 线程终结规则:线程中的所有操作都先行发生于对此线程的终止检测;
  • 对象终结规则:一个对象的初始化完成先行发生于它的finalize()方法的开始;
  • 传递性:如果操作A happens-before 操作B,操作B happens-before操作C,那么操作A happens-before 操作C;
  • 线程中断规则:对线程interrupt()方法的调用先行发生于被中断线程的代码检测到中断事件的发生。