只是简单理解,如有不足之处,还请指出。

happen-before简单理解

happen-before 规则一共就八条,整理一下对这八条规则的理解。

  1. 单线程happen-before原则

理解:就是在单线程的程序中,前边代码产生的结果对后边代码是可见的。

  1. 锁的happen-before原则:

解锁操作的结果对后面的加锁操作一定是可见的,无论两个是否在一个线程。

  1. volatile的happen-before原则

对 volatile 变量的写操作的结果对于发生于其后的任何操作的结果都是可见的。

  1. happen-before的传递性原则

A happen-before B ,B happen-before C,则A happen-before C,就是 happen-before 具有传递性

  1. 线程启动的happen-before原则

start 方法造成的函数副作用必须对其它方法可见。

  1. 线程中断的happen-before原则

interrupt 方法改变的状态必须对后续执行的检测方法可见。

  1. 线程终结的happen-before原则

线程中的方法造成的函数副作用必须对线程关闭方法可见。

  1. 对象创建的happen-before原则

该条原则强调的是多线程情况下对象初始化的结果必须对发生于其后的对象销毁方法可见.

总结:前边程序产生的结果对后边的程序是可见的,但是这个英语总是让你想成谁先与谁发生,只要记住和这个没关系,就记住 前边程序产生的结果对后边的程序是可见的就行了。

你对“happen-before原则”的理解可能是错的?相关推荐

  1. happen-before原则的理解

    前言 在程序执行时,为了提高性能,编译器和处理器会对指令进行重排序. 为了明确定义多线程场景下重排序的问题(可见性.有序性.原子性),Java引入了JMM(Java Memory Model),也就是 ...

  2. [vue] 说说你对vue组件的设计原则的理解

    [vue] 说说你对vue组件的设计原则的理解 第一: 容错处理, 这个要做好, 极端场景要考虑到, 不能我传错了一个参数你就原地爆炸 第二: 缺省值(默认值)要有, 一般把应用较多的设为缺省值 第三 ...

  3. [Vue][面试]谈一谈对vue的设计原则的理解

    谈一谈对vue的设计原则的理解 思路: 在vue官网上写着大大的定义和特点: -渐进式JavaScript框架 -易用.灵活和高效 渐进式JavaScript框架: 与其它大型框架不同的是,Vue被设 ...

  4. 对“端到端”原则的理解

    对"端到端"原则的理解 前些天读了两篇论文,一篇是J.H.Saltzer,D.P.Read 和D.D.Clark 在80年代初发表的<The End-TO-End Argum ...

  5. 设计模式六大原则的理解与归纳

    文章目录 一.开闭原则 二.里氏代换原则 三.依赖倒转原则 四.接口隔离原则 五.迪米特法则 六.合成复用原则 一.开闭原则 对扩展开放,对修改关闭.在程序需要进行拓展的时候,不能去修改原有的代码,实 ...

  6. 对访问控制中最小特权原则的理解

    在网上看到许多资料介绍访问控制中的一个基本原则"最小特权原则"是"在需要时才给用户分配所需的权限",感觉这样如果从字面理解的会产生歧义,如果不在授权时为操作者指 ...

  7. MySQL 最左原则的理解

    先看下规则:一下是美团的技术 建索引的几大原则 1.最左前缀匹配原则,非常重要的原则,mysql会一直向右匹配直到遇到范围查询(>.<.between.like)就停止匹配,比如a = 1 ...

  8. 我对软件设计原则的理解

    1. 开闭原则 软件实体(class,模块,功能或业务,微服务etc)对修改关闭,对拓展开放. 抽象构建框架,实现拓展细节. 面向抽象编程,而不是面向具体实现编程.因为抽象相对来说是稳定的,让类去依赖 ...

  9. 接口隔离原则-快速理解

    定义 用多个专门的接口,而使用单一的总接口,客户端不应该依赖它不需要的接口 一个类对一个类的依赖应该建立在最小的接口上 建立单一接口,不要建立庞大臃肿的接口 尽量细化接口,接口中的方法尽量少 注意 适 ...

  10. 关于AWS中最小权限原则的理解

    目录 1. 关于最小权限原则 2. 案例分析 1. 关于最小权限原则 最小权限是指每个程序和系统用户都应该具有完成任务所必需的最小权限集合. 对于系统管理员而言,一个用户应该只能访问履行他的相关职责所 ...

最新文章

  1. LeetCode 3. Longest Substring Without Repeating Characters-- c++,java,python解法
  2. iOS 滚动图滚动到顶部汇总
  3. arch linux 下安装 conan permissionError :[Erno 13] Permission denied
  4. zabbix mysql路径_ZABBIX数据库迁移目录
  5. php实现小说字典功能_四十章 PHP实现获取并生成数据库字典的方法
  6. .net core 2.0部署到CentOS7系统
  7. 无招胜有招之Java进阶JVM(四)内存模型plus
  8. item 24: 区分右值引用和universal引用
  9. 我如何使用React,Redux-Saga和Styled Components构建NBA球员资料获取器
  10. LeetCode 834. 树中距离之和(树上DP)*
  11. python自动测试v_python下selenium自动化测试自我实践
  12. MQ监听 linux,RabbitMQ的安装,配置,监控
  13. java php serialize_PHP serialize JSON 解析
  14. Matlab中函数imnoise使用浅谈
  15. 富文本编辑器在Java中使用
  16. 小程序开发:社区团购系统应该如何选择?
  17. 关于伪分布式hadoop集群及HBase安装的一些记录(基于林子雨老师的大数据软件安装和基础编程)
  18. java 苹果cms 萌果_MacCMS8.x(苹果CMS8.x)整合Ckplayer6.4
  19. 保姆级讲解Transformer
  20. Ineligible Devices 不被识别的设备

热门文章

  1. java多态理解通俗,说说 Java 多态那些事儿~
  2. 吴恩达预热新课!万字回顾机器学习!
  3. Eureka Client启动后就关闭 Unregistering application xxx with eureka with status DOWN
  4. 关于瑞星杀毒软件对浏览器速度的影响
  5. 笔记本软件兼容性测试,Windows 10 技术预览版 国产杀毒软件兼容性测试:大多可以使用...
  6. LTP性能测试工具的使用详解
  7. 打开和设置IDEA欢迎界面
  8. python手机壁纸_【python日常学习】爬取各种图片(电脑、手机壁纸,美女、明星图片,头像等等)...
  9. 制作世界人口地图json--10.4学习日记
  10. 【人工智能】【1024】谷歌量子计算突破登Nature封面,号称200秒顶超算10000年!