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()方法的调用先行发生于被中断线程的代码检测到中断事件的发生。