Advertisement

happens-before及其示例

阅读量:

文章目录

    • 开篇说明
      • 简要概述
      • 深入解析
      • 结尾陈述

研究背景与动机阐述

要准确把握happens-before的概念,首先需要深入领会Java内存模型的内涵。对于Java内存模型,可以将其视为如下图所示的简化表述。

在这里插入图片描述

每个线程在执行任务时都会分配一个独立的存储空间,用于处理当前的操作。在此过程中,所涉及的变量会从主存中复制到各自的本地内存中,各线程仅在其本地内存中对变量进行操作。而主存中保存的数据则始终为最初未被修改的状态。因此,当多个线程同时对同一份数据进行处理时,可能会导致无法预料的结果出现。

简述

happens-before共包含8条规则

  1. 程序顺序规则 : 在同一进程中,按照控制流的执行顺序,先执行的操作会优先于后续操作发生。具体而言,这里的顺序并非单纯依据代码编写顺序,而是需要结合分支、循环等结构进行判断。
  2. 锁管理规则 : 对某个锁的释放操作会优先于之后对该锁的获取操作发生。此处需特别指出,所涉及的必须是同一个锁,“之后”指的是时间上的先后关系。

全部评论 (0)

还没有任何评论哟~