如果两个操作访问同一个变量,且这两个操作中有一个为写操作,此时这两个操作之间就存在数据依赖性。数据依赖分为下列3种类型,如表3-4所示。

上面3种情况,只要重排序两个操作的执行顺序,程序的执行结果就会被改变。

前面提到过,编译器和处理器可能会对操作做重排序。编译器和处理器在重排序时,会遵守数据依赖性,编译器和处理器不会改变存在数据依赖关系的两个操作的执行顺序。

这里所说的数据依赖性仅针对单个处理器中执行的指令序列和单个线程中执行的操作,不同处理器之间和不同线程之间的数据依赖性不被编译器和处理器考虑。

注:本文源自《Java并发编程的艺术》一文。

JAVA基础篇-数据依赖性含义相关推荐

  1. 菜鸟学习笔记:Java基础篇2(变量、运算符、流程控制语句、方法)

    菜鸟学习笔记:Java基础篇2 变量 基本概念 变量作用域 final关键字 运算符 算术运算符 比较运算符 逻辑运算符 位运算符 赋值运算符 条件运算符 运算符优先级 Java三种流程控制语句 顺序 ...

  2. 【Java基础篇】封装(Encapsulation)

    [Java基础篇]封装(Encapsulation) 1. 封装含义 2. private(私有)关键字 3. 构造函数 3.1 什么是构造函数 3.2 构造函数的重载 3.3 构造函数的调用 3.4 ...

  3. 《Java 后端面试经》Java 基础篇

    <Java 后端面试经>专栏文章索引: <Java 后端面试经>Java 基础篇 <Java 后端面试经>Java EE 篇 <Java 后端面试经>数 ...

  4. Java基础篇 学习笔记

    List item Java基础篇 学习笔记 java基础篇 第1章 计算机.程序和java概述 学习笔记 1.1什么是计算机 简单来说:计算机就是 ' 存储 ' 和 ' 处理 ' 数据的电子设备. ...

  5. Java基础篇4——数组

    Java基础篇4--数组 1.数组的概念 当需要在Java程序中记录单个数据内容时,则声明一个变量即可 当需要在Java程序中记录多个类型相同的数据内容时,则声明一个一维数 组即可,一维数组本质上就是 ...

  6. Java基础篇2——运算符

    Java基础篇2--运算符 1.运算符 1.1.算数运算符 +表示加法运算符 -表示减法运算符 *表示乘法运算符 /表示除法运算符 %表示取余运算符 1.2.关系运算符 所有以关系运算符作为最终运算的 ...

  7. Java基础篇1——变量与数据类型

    Java基础篇1--变量与数据类型 1.标识符命名规则 标识符以由大小写字母.数字.下划线(_)和美元符号($)组成,但是不能以数字开头. 大小写敏感 不能与Java语言的关键字重名 不能和Java类 ...

  8. 菜鸟学习笔记:Java基础篇7(包装类、时间相关类、文件类、异常处理类)

    菜鸟学习笔记:Java其他常用类 基本数据类型包装类 时间处理和文件处理相关类 Date时间类 SimpleDateFormat Calendar日历类 文件类 异常机制 异常的概念 Java异常处理 ...

  9. 菜鸟学习笔记:Java基础篇6(数组、字符串)

    菜鸟学习笔记:Java常用类(数组.字符串) 数组 概述 数组的定义 二维数组 数组查找和排序 查找 排序 数组运用--字符串 不可变字符序列(String) 可变字符序列(StringBuilder ...

  10. 菜鸟学习笔记:Java基础篇4(面向对象三大特征)

    菜鸟学习笔记:Java面向对象篇中 继承 概念 方法重写(override) Object类 Super关键字 组合 final关键字补充 封装 访问控制符 多态 继承 概念 继续上一篇的例子: #m ...

最新文章

  1. JZOJ 5924. 【NOIP2018模拟10.23】Queue
  2. IntelliJ IDEA创建spring boot项目的方法
  3. 多路平衡查找树(B Tree)(分裂、合并)
  4. 文献记录(part41)--Residual multi-task learning for facial landmark localization and expression ...
  5. 如何将javaweb项目部署到linux下
  6. Jest + React Testing Library 单测总结
  7. algorand共识协议_【Filecoin】理解预期共识 - 及它的优缺点
  8. Vue 跳转相同路由携带不同参数,而页面不刷新
  9. TypeError: unhashable type: 'numpy.ndarray'
  10. Building Roads(POJ-3625)
  11. Java面试之到底值传递和引用传递???
  12. oracle中的fetchsize,oracle setFetchsize() 优化查询速度
  13. php web 简单的系统,Slim 简单而强大的 PHP 微型 Web 开发框架 - 资源分享
  14. php封装app微信支付
  15. 杨中科:我的大学生活
  16. 为什么计算机专业英语很重要,英语对计算机专业的重要性及如何提高英语水平...
  17. 右键快捷菜单压缩文件的消失问题解决办法!
  18. OPEN3D(python)学习笔记-1.3 法线估计
  19. 【Ubuntu升级报错】“the following signatures couldn’t be verified because the public key is not available”
  20. crh寄存器_牛人的STM32学习笔记(寄存器版本).doc

热门文章

  1. Java并发编程:volatile关键字解析(学习总结-海子)
  2. 台湾大学林轩田机器学习技法课程学习笔记14 -- Radial Basis Function Network
  3. requests爬虫搜狗微信公众号
  4. handsome for Typecho主题重建备忘
  5. 管理计算机(域)的内置账户名称,管理active directory中用户和计算机账户
  6. 软件包管理:rpm和yum
  7. iDB-数据库自动化运维平台
  8. 针式打印机打印显示传真服务器,针式打印机怎么设置【图文详解】
  9. python floor是什么意思_python里floor怎么用
  10. 传感器与检测技术基础知识(4)—— 电阻式传感器