Java并发编程
文章平均质量分 82
Java并发编程的艺术 笔记
一些其他有关内容
Loritas-
日积月累,滴水成海
展开
-
5.重排序
文章目录@[toc]重排序1. 数据依赖性2. as-if-serial语义3. 程序顺序规则4. 重排序对多线程的影响 重排序 重排序:编译器和处理器为了优化程序性能而对指令序列重新排序的一种手段 1. 数据依赖性 定义:如果两个操作访问同一个变量,且这两个操作中有一个为写操作,则这两个操作存在数据依赖性 数据依赖性类型表 名称 代码示例 说明 写后读 a = 1; b = a; 写一个变量之后,再读这个位置 写后写 a = 1; a = 2; 写一个变量之后,再写这个变量 读后原创 2021-08-01 12:10:07 · 76 阅读 · 0 评论 -
4.Java内存模型基础
文章目录@[toc]Java内存模型的基础1. 并发编程模型的两个关键问题2. Java内存模型的抽象结构3. 从源代码到指令序列的重排序4. 并发编程模型的分类5. happens-before简介 Java内存模型的基础 1. 并发编程模型的两个关键问题 两个问题: 线程之间如何通信 线程之间如何同步 通信:线程之间以何种机制来交换信息 同步:程序组用于控制不同线程间操作发生相对顺序的机制 两种并发模型: 共享内存:线程之间共享程序的公共状态,通过写-读内存中的公共状态来隐式通信,同步是显式进行的原创 2021-07-31 17:29:20 · 71 阅读 · 0 评论 -
3.原子操作的实现原理
文章目录@[toc]术语定义处理器实现原子操作1)使用总线锁保证原子性2)通过缓存锁保证原子性Java实现原子操作1)使用循环CAS实现原子操作2)CAS实现原子操作的三大问题1.ABA问题2.循环时间长开销大3.只能保证一个共享变量的原子操作3)使用锁机制实现原子操作 术语定义 原子操作: 不可中断的一个或一系列操作 CPU术语定义 术语名称 英文 解释 缓存行 Cache Line 缓存的最小单位 比较并交换(CAS) Compare and Swap CAS操作需要输入两个数值,原创 2021-07-26 15:53:51 · 416 阅读 · 0 评论 -
2. synchronized的实现原理与应用
文章目录@[toc]synchronized的实现原理与应用Java对象头锁的升级与对比偏向锁轻量级锁锁的优缺点对比 synchronized的实现原理与应用 synchronized被称作重量级锁,但是在JavaSE 1.6的各种优化以后,部分情况下就并非那么重了 这主要是因为1.6以后引入了偏向锁和轻量级锁,以及锁的存储结构和升级过程 这些都是为了减少获得锁和释放锁而带来的性能消耗。 java的每一个对象都可以作为锁,具体表现为以下三种形式: 普通同步方法,锁是当前的实例对象 静态同步方法,锁是当前原创 2021-06-17 17:16:24 · 106 阅读 · 0 评论 -
1. volatile的应用
文章目录@[toc]volatile的应用定义原理volatile的具体实现原则1. Lock前缀指令会引起处理器缓存回写到内存2. 一个处理器的缓存回写会导致其他处理器的缓存无效volatile的使用优化 volatile的应用 volatile是轻量级的synchronized,它在多处理器开发中保证共享变量的**“可见性”**,它不会引起线程上下文的切换和调度 若是能够恰当的使用volatile,它的使用和执行成本会比synchronized更低 定义 Java允许线程访问共享变量,为了确保共享变量原创 2021-06-02 20:12:27 · 83 阅读 · 0 评论