
并发编程艺术读书笔记
鬼灭之刃
提升自我
展开
-
1 Java并发机制的底层实现原理(第一部分)
1 volatile 1.1 volatile应用 保证共享变量的“可见性”。可见性的意思是当一个线程修改一个共享变量时,另外一个线程能及时读到这个修改的值。count++无法保证count的“可见性”。因为涉及两个操作:1)从缓存区读取count值 2)count+1之后写回内存。 public class VolatileDemo { private int...原创 2019-05-13 20:30:09 · 201 阅读 · 0 评论 -
2 Java并发机制的底层实现原理(第二部分)
5 偏向锁 只有一个线程访问共享资源 5.1 偏向锁的获取 当一个线程访问同步块并获取锁时,会在对象头和栈帧中的锁记录里存储锁偏向的线程ID,以后该线程在进入和退出同步块时不需要进行CAS操作来加锁和解锁,只需简单地测试一下对象头的Mark Word里是否存储着指向当前线程的偏向锁。如果测试成功,表示线程已经获得了锁。如果测试失败,则需要再测试一下Mark Word中偏向锁的标识是否设置成1...原创 2019-05-13 21:43:49 · 204 阅读 · 0 评论 -
Chapter1 并发编程的挑战
1 编发编程的挑战 关键是回答红色部分的问题 2 上下文切换为什么会消耗大量时间? 2.1 上下文切换的概念 CPU通过时间片分配算法来循环执行任务,当前任务执行一个时间片后切换到下一个任务。但是,在切换前会保存上一个任务的状态,以便下次切换回这个任务时,可以加载这个任务的状态。所以任务从保存到再加载的过程就是一次上下文切换。 2.1 上下文切换需要保存哪...原创 2019-05-13 16:16:18 · 194 阅读 · 0 评论