
Concurrent
六月的尾巴
路漫漫其修远兮,吾将上下而求索
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
并发编程学习笔记(三)------synchronized的实现原理及应用
Synchronized的实现原理 JAVA SE 1.6对synchronized进行了各种优化之后,有些情况下它显得不那么重了。为了减少获得锁和释放锁带来的性能消耗而引入了偏向锁和轻量级锁。 首先了解一下synchronized实现同步的基础:Java中每一个对象都可以作为锁。具体表现为三种形式: 对于普通同步方法,锁是当前实例对象 对于静态同步方法,锁是当前类的Class对象 对于同步方法...原创 2019-07-08 00:34:19 · 166 阅读 · 0 评论 -
并发编程学习笔记(四)------原子操作的实现原理
注明: 参考书作者:方腾飞 魏鹏 程晓明 参考书目:《Java 并发编程的艺术》 原子操作的实现原理 处理器如何实现原子操作 处理器提供总线锁定和缓存锁定两个机制来保证复杂内存操作的原子性。 (1)使用总线锁保证原子性 所谓总线锁就是使用处理器提供的一个Lock#信号,当一个处理器在总线上输出此信号时,其他处理器的请求将被阻塞住,那么该处理器可以独占共享内存。 (2)使用缓存锁保证原子性 在同一时...原创 2019-07-10 00:25:37 · 160 阅读 · 0 评论 -
并发编程学习笔记(一)------并发编程的挑战
上下文切换 1.什么是上下文切换? CPU通过时间片分配算法来循环执行任务,当前任务执行一个时间片后会切换到下一个任务。但是在切换前会保存一个任务的状态,以便下次切换回这个任务时,可以再加载这个任务的状态。所以任务从保存到再加载的过程就是一次上下文切换。 2.如何减少上下文切换? 我们知道,频繁地切换上下文会影响多线程的执行速度,甚至于在一定执行次数内,并发执行效果还不如串行执行。当并发执行累加操...原创 2019-07-04 23:43:45 · 146 阅读 · 0 评论 -
并发编程学习笔记(二)------volatile关键字
volatile关键字 在了解volatile关键字之前,先了解一些cpu的术语定义,来给volatile铺路 术语 英文单词 术语描述 内存屏障 memory barriers 是一组处理器指令,用于实现内存操作的顺序限制 缓冲行 cache line CPU高速缓存中可以分配的最小存储单位。处理器填写缓存行时会加载整个缓存行 原子操作 atomic operations...原创 2019-07-06 00:26:19 · 217 阅读 · 0 评论 -
并发编程学习笔记(五)------ Java内存模型
注明: 参考书作者:方腾飞 魏鹏 程晓明 参考书目:《Java 并发编程的艺术》 Java内存模型基础 并发编程模型的两个关键问题 在并发编程中,需要处理的两个关键问题: 线程之间如何通信 线程之间如何同步 线程之间通信机制有两种:共享内存和消息传递 在共享内存的并发模型中,线程之间共享程序的公共状态,通过写-读内存中的公共状态进行隐式通讯。 在消息传递的并发模型里,线程之间没有公共状态,线程之...原创 2019-07-15 23:11:53 · 184 阅读 · 0 评论 -
并发编程学习笔记(八)------ volatile的内存语义
注明: 参考书作者:方腾飞 魏鹏 程晓明 参考书目:《Java 并发编程的艺术》 volatile的内存语义 volatile的特性 理解volatile特性的一个好方法是把对volatile变量的单个读/写,看成是使用同一个锁对这些单个读/写操作做了同步。下面通过具体的示例来说明: class VolatileFeatureExample{ volatile long v1 = 0L; ...原创 2019-07-24 07:12:17 · 164 阅读 · 0 评论 -
并发编程学习笔记(六)------ 重排序
注明: 参考书作者:方腾飞 魏鹏 程晓明 参考书目:《Java 并发编程的艺术》 重排序 重排序是指编译器和处理器为了优化程序性能而对指令序列进行重新排序的一种手段。 数据依赖性 如果两个操作访问同一个变量,且这两个操作中有一个是写操作,此时这两个操作之间就存在数据依赖性。数据会发生改变,那么在数据上的操作都会存在数据依赖性。数据依赖分为下列3中类型。 名称 代码示例 说明 写...原创 2019-07-18 00:30:14 · 185 阅读 · 0 评论 -
并发编程学习笔记(七)------ 顺序一致性
注明: 参考书作者:方腾飞 魏鹏 程晓明 参考书目:《Java 并发编程的艺术》 顺序一致性 顺序一致性内存模型是一个理论参考模型,在设计的时候,处理器的内存模型和编程语言的内存模型会以顺序一致性内存模型作为参考。 数据竞争与顺序一致性 如果一个多线程程序能正确同步,这个程序将是一个没有数据竞争的程序。JMM对正确同步的多线程程序的内存一致性做了如下保证。 如果程序是正确同步的,程序的...原创 2019-07-21 16:36:40 · 755 阅读 · 0 评论