先行发生原则Happens-before
时间:2020-03-27
本文章向大家介绍先行发生原则Happens-before,主要包括先行发生原则Happens-before使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
int k = 1; //男人 int j = k; //女人
先行发生原则是Java内存模型中定义的两项操作之间的偏序关系,如果操作A先行发生于操作B,其实就是说在发生操作B之前,操作A所产生的影响能够被B观察到
简单来说:执行顺序的控制,后续代码可以监控到之前代码的所有操作
八大原则:
1.程序次序规则:
在一个线程内,按照代码的顺序,书写在前面的代码优先于发生书写在后面的代码
2.管程锁定原则:
一个unlock操作先行发生于后面对同一个锁的lock操作,注意是同一个锁
3.volatile原则:
对一个volatile变量的写操作先行发生于后面对该变量的读操作
4.线程启动原则:
Thread对象的start()方法优先于此线程的每一个动作
5.线程终止原则:
线程中所有的操作都优先发生于对此线程的终止
6.线程中断原则
对线程的interrupt()方法的调用先行发生于被中断线程的代码检测中断事件的发生 先中断再检测
7.对象终结原则:
一个对象的初始化(构造函数执行完毕)完成优先发生于它的finalize()方法的开始
8.传递性:
int a; //1 int b; //2 int c; //3
如果操作A先行发生于操作B,操作B先行发生于操作C,那么就可以得出来操作A优先发生于操作C
原文地址:https://www.cnblogs.com/wishsaber/p/12584131.html
- Activity之间传递参数
- linux下rsync和tar增量备份梳理
- 重温Delphi之:面向对象
- Android新手之旅(15) Win7下配置遇到的问题
- 重温Delphi之:如何定义一个类
- Android新手之旅(2) 新手问题
- Android新手之旅(2) 新手问题
- Android新手之旅(9) 自定义的折线图
- 2018春节抢票攻略:不仅仅是12306微信小程序启用
- Android新手之旅(9) 自定义的折线图
- Android新手之旅(11) 在现有页面中插入新的view
- Docker容器学习梳理--容器间网络通信设置(Pipework和Open vSwitch)
- 温故而知新:Asp.Net中如何正确使用Session
- Android新手之旅(13) listview中数据重复的问题
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Python|Pandas的常用操作
- C++设计模式笔记(01)-设计模式的介绍
- 【DB笔试面试842】在Oracle中,如何启动Oracle数据库的监听日志?
- 【揭秘】C语言类型转换时发生了什么?
- JUC学习之8锁现象
- TensorFlow惊现大bug?网友:这是逼着我们用PyTorch啊!
- 机器学习|用Q-Learning走迷宫
- C++设计模式笔记(03-02) - Template Method_模板方法(下)
- 从零开始学习华为路由交换 | OSPF修改计时器
- 【没落的985/211】Python爬取知乎8万字回答进行高校分析
- LinkedBlockingQueue源码学习
- 三歪吐血总结了各个中间件是如何实现持久化的
- ThreadPoolExecutor源码学习
- Docker六脉神剑(四) 使用Docker-Compose进行服务编排搭建lnmp环境
- 干的想喝水,一篇文章带你读懂硬盘工作原理!