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