(1).程序次序规则:在一个线程内,按照程序代码顺序,书写在前面的操作先行发生于书写在后面的操作。准确地说,应该是控制流顺序而不是程序代码顺序,因为要考虑分支、循环等结构。
(2).管程锁定规则:一个unlock操作先行发生于后面对同一个锁的lock操作。这里必须强调的是同一个锁,而"后面"是指时间上的先后顺序。
(3).volatile变量规则:对一个volatile变量的写操作先行发生于后面对这个变量的读操作,这里的"后面"同样是指时间上的先后顺序。
(4).线程启动规则:Thread对象的start()方法先行发生于此线程的每一个动作。
(5).线程终止规则:线程中的所有操作都先行发生于对此线程的终止检测,我们可以通过Thread.join()方法结束、Thread.isAlive()的返回值等手段检测到线程已经终止执行。
(6).线程中断规则:对线程interrupt()方法的调用先行发生于被中断线程的代码检测到中断事件的发生,可以通过Thread.interrupted()方法检测到是否有中断发生。
(7).对象终结规则:一个对象的初始化完成(构造函数执行结束)先行发生于它的finalize()方法的开始。

Happens-Before的7个规则相关推荐

  1. 浅显易懂 Makefile 入门 (03)— 目标文件搜索(VPATH 和 vpath 的区别和使用)、隐含规则

    1. 目标文件搜索(VPATH和vpath) 如果需要的文件是存在于不同的路径下(即源文件与 Makefile 文件不在同一个路径下),在编译的时候就用到了 Makefile 中为我们提供的目录搜索文 ...

  2. 浅显易懂 Makefile 入门 (01)— 什么是Makefile、为什么要用Makefile、Makefile规则、Makefile流程如何实现增量编译

    1. 什么是 Makefile Makefile 文件描述了 Linux 系统下 C/C++ 工程的编译规则,它用来自动化编译 C/C++ 项目.一旦写编写好 Makefile 文件,只需要一个 ma ...

  3. Java中类、常量、变量、方法名等命名规则

    Java中类.常量.变量.方法名等命名规则 命名规则: 命名由字母.数字.下划线.美元符号($)构成. 命名不可以数字作为开头. 长度无限制,但不可存在空格. 大小写所表述内容含义不同. 命名不可与J ...

  4. LeetCode简单题之统计匹配检索规则的物品数量

    题目 给你一个数组 items ,其中 items[i] = [typei, colori, namei] ,描述第 i 件物品的类型.颜色以及名称. 另给你一条由两个字符串 ruleKey 和 ru ...

  5. LLVM一些语法规则

    LLVM一些语法规则 LLVM文档 LLVM编译器基础架构支持广泛的项目,从工业强度编译器到专门的JIT应用程序,再到小型研究项目. 同样,文档分为几个针对不同受众的高级别分组: LLVM设计概述 几 ...

  6. Go 学习笔记(53)— Go 标准库之 path(判断绝对路径、拆分目录和文件、组合路径、返回路径目录、获取路径最后文件名、获取文件扩展名、路径匹配规则)

    1. 概述说明 import "path" path 实现了对斜杠分隔的路径的实用操作函数. 2. 主要函数 2.1 func IsAbs func IsAbs(path stri ...

  7. Go 学习笔记(26)— Go 习惯用法(多值赋值,短变量声明和赋值,简写模式、多值返回函数、comma,ok 表达式、传值规则)

    1. 多值赋值 可以一次性声明多个变量,并可以在声明时赋值,而且可以省略类型,但必须遵守一定的规则要求. package main import "fmt"func main() ...

  8. [笔记]C#基础入门(八)——C#标识符的命名规则

    程序中的变量名.常量名.类名.方法名,都叫做标识符.C#有一套标识符的命名规则,如果命名时不遵守规则,就会出错.这套规则简单说有下面三条: ①标识符只能由英文字母.数字和下划线组成,不能包含空格和其他 ...

  9. 关于对IPtables规则的理解

    1,iptables中的所有规则都会存放到/etc/sysconfig/iptables文件中 2,最前端的规则既是现有规则 3,如果要改变现有的规则有两种办法: (1) 使用iptables -t ...

  10. [摘录]代码优化规则

    <<代码优化:有效使用内存>>代码优化建议:     1. 展开读取内存的循环     2. 消除数据相关性         如果请求的RAM单元存在地址数据相关性(也就是说, ...

最新文章

  1. ireport各个版本的下载地址分享
  2. 每次都要清理cache?强制不让浏览器缓存!
  3. 2.2.5 操作系统之调度算法(时间片轮转调度算法、优先级调度算法、多级反馈队列调度算法)
  4. go 单元测试 testing 打印输出_2020,你需掌握go 单元测试进阶篇
  5. 大数据开发笔记(三):Mapreduce
  6. 【Selenium】1.介绍 Selenium
  7. c语言汽车租赁系统实验报告,汽车租赁系统的c语言,数据结构的语言程序
  8. ubuntuv20启动界面美化_Win10 美化软件(简洁篇)
  9. 光立方程序详解_C ++程序使用宏查找数字的立方
  10. 移动通信学习笔记03_蜂窝原理
  11. 使用FFmpeg工具进行推流、拉流、截图、变速、转换,及常见问题处理
  12. Python学习笔记之蓝牙模块通讯-Pybluez
  13. 蓝丝雨零基础DNF脚本开发速成系列
  14. postman安装与使用
  15. 性别年龄论文阅读(3)——VGGFace2
  16. 创意:物品定位智能标签
  17. 【LeetCode】322. 零钱兑换 结题报告 (C++)
  18. 手推支持向量机03-硬间隔SVM-模型求解(对偶问题之KKT条件)
  19. 金胜维固态硬盘MK8115主控开卡成功教程
  20. 星巴克中国首推全新精品咖啡品类“威士忌桶酿咖啡”

热门文章

  1. 这篇 CPU Cache,估计要消化一下
  2. MySQL 8.0 新特性:引人注目的哈希连接(Hash Join)
  3. Go 内存对齐的那些事儿
  4. LiveVideoStackCon深圳-网络的研究够搞个几辈子
  5. 使用级联SFU改善媒体质量和规模
  6. NLP新秀:BERT的优雅解读
  7. Wireshark网络抓包(一)——数据包、着色规则和提示
  8. c/c++比较灵活的方法:回调函数和函数指针
  9. 确保对象的唯一性——单例模式
  10. 实现对象的复用——享元模式