目录

  • 1.基本概述
    • 1.1 为什么要happen-before原则
  • 1.2 happen-before原则定义
  • 2.规则解读
    • 2.1 程序顺序规则
    • 2.2 监视器锁规则
    • 2.3 volatile变量规则
    • 2.4 传递性规则
    • 2.5 线程启动规则
    • 2.6 线程终止规则
    • 2.7 线程中断规则
    • 2.8 对象终结规则
  • 关注我的公众号,不迷路

1.基本概述

1.1 为什么要happen-before原则

由于多线程编程时,线程并不直接操作主内存,所以会存在缓存不一致的问题(可见性问题)。为了解决这个问题,想要我们在编写程序的时候非常小心,而编写多线程程序时我们需要注意的地方就非常多。java设计者也考虑到这个问题,所以设计了happen-before原则,只要符合其中的规则,就不用担心可见性问题。

1.2 happen-before原则定义

如果操作A happen-before 操作B , 就认为操作A对操作B可见。

看这句话非常简单,其实是你想简单了,往下看就知道。

happen-before原则解读相关推荐

  1. 第一部分:设计模式六大原则解读——什么是接口隔离

    设计模式六大原则解读--什么是接口隔离 author:陈镇坤27 创建日期:2022年1月31日 文章目录 设计模式六大原则解读--什么是接口隔离 一.接口隔离 1.接口隔离的定义 2.接口隔离的目的 ...

  2. MySQL 性能优化,优化设计及设计原则解读

    MySQL性能优化的目的 如何合理的设计数据库? 什么样的数据库设计才能给后期DBA优化提供基石? 数据库设计与程序设计的差异? 数据库设计早期优化 1. 关系明确(理清表之间的关系,可以通过冗余的方 ...

  3. 《设计模式之禅》之——六大设计原则解读

    一.单一职责原则(Single Responsibility Principle,SRP) 1. 单一职责原则定义 应该有且仅有一个原因引起类的变更. 2. 单一职责原则好处 类的复杂性降低,实现什么 ...

  4. SOLID设计原则解读

    SRP:单一职责原则 任何一个软件模块都应该只对某一类行为者负责 OCP:开闭原则 主要目标时让系统易于扩展,同时限制其每次被修改所影响的范围.实现方式就是将系统分为一系列组件,组件之间按层级关系分割 ...

  5. 【项目管理】敏捷原则

    用户必须积极参与 解读:用户参与能最大程度在业务需求梳理和确认上给予及时准确的反馈,同时用户作为参与者能够及时获取项目推进过程的相关信息. 必须授权团队做决定 (对应敏捷宣言--个体与交互胜过过程与工 ...

  6. 面试再被问到 ConcurrentHashMap,把这篇文章甩给他!

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:^_TONY_^ cnblogs.com/ITtangtan ...

  7. 大三、研二的秋招备战路线(Java、大数据)

    本文经授权转载自微信公众号:大数据肌肉猿 一.写作背景 二.秋招的意义 三.不同水平的同学备战秋招的策略(案例) 四.部分面试题整理 五.准备过程中的注意事项 六.针对简历复习 一.写作背景 1.分享 ...

  8. Java集合:ConcurrentHashMap详解

    前言 近期深入学习了ConcurrentHashMap,便整理成一篇博文记录一下,请注意:此博文针对的是JDK1.6,因此如果你看到的源码跟我文中的不同,则可能是由于版本不一样. Concurrent ...

  9. 《并发编程的艺术》读书笔记

    1.并发编程基础 CPU:CPU是计算机的核心,其负责承担计算机的计算任务.这里我们比喻为一个工厂 进程:学术上说,进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系统进行资 ...

  10. 深入研究ConcurrentHashMap 源码从7到8的变迁

    ConcurrentHashMap是线程安全且高效的HashMap 1 为什么要使用ConcurrentHashMap 线程不安全的HashMap HashMap是Java中最常用的一个Map类,性能 ...

最新文章

  1. Ctrl+E快捷键,一键批量解决Excel中90%的问题!
  2. ie6不能播放视频问题
  3. linux模糊查找子目录,linux怎么模糊查找一个文件
  4. Zookeeper的功能以及工作原理 (转自:http://www.cnblogs.com/felixzh/p/5869212.html)
  5. wordpress 显示数学公式 (MathJax-LaTeX)
  6. MassTransit Get Started-
  7. 【每日一题】1月29日题目 和与或
  8. python super详解_Python super 详解
  9. java 拦截指定jsp_详解Struts2中对未登录jsp页面实现拦截功能
  10. quartus仿真18:仿真简单D触发器和JK触发器输出的波形
  11. 使用docker安装easy-mock
  12. [转] eclipse安装subversive插件
  13. 清除windows 系统中 任意已安装任意版本的 .NET Framework
  14. 国内主流的ERP软件大盘点
  15. 基于Qiskit——《量子计算编程实战》读书笔记(一)
  16. oracle单表空间预估,使用ARIMA和腾讯的Metis时序数据异常检测来预测系统空间容量变化趋势...
  17. 基于GITHUB ACTION的定时任务,真香!
  18. 【无标题】如何重置密码
  19. Mysql索引类型 normal, unique, full text的区别
  20. SRAM SROM DRAM DROM DDR NAND FLASH EMMC的区别

热门文章

  1. 项目知识管理体系指南阅读(2)
  2. chrome如何对部分网页截图
  3. 主流邮箱的反垃圾邮件技术
  4. Linux下的sock_stream和sock_dgram
  5. 2019.03.04【ZJOI2018】【BZOJ5212】【洛谷P4338】历史(假LCT)
  6. 改Robust Video Matting为Robust Image Matting
  7. 目标检测——Faster RCNN
  8. 游戏设计自学记录(入门完结)
  9. 经典游戏江湖医馆文字版
  10. wps2019数据分析加载项_wpsexcel数据分析工具在哪里