java并发框架
线程池
第一章
1.1 上下文切换
- 时间片
- 切换开销
1.1.3 如何减少上下文切换
- 无锁并发编程,将数据按照Hash算法分段取模,不同的线程处理不同的数据段
- CAS算法
- 使用最少的线程
- 使用协程
1.2 死锁
避免死锁的常见方法:
-
避免一个线程同时获取多个锁。
-
避免一个线程在锁内同时占用多个资源,尽量保证每个锁只占用一个资源。
-
尝试使用定时锁,使用lock.tryLock(timeout)来替代使用内部锁机制。
-
对于数据库锁,加锁和解锁必须在一个数据库连接里,否则会出现解锁失败的情况。
1.3 资源限制的挑战
- 什么是资源限制
- 资源限制的挑战
- 如何解决资源限制的问题
- 在资源限制的情况下进行并发编程
1.4 总结
- 多使用jdk提供的并发容器和工具类解决并发问题
第二章 java并发机制的底层实现原理
2.1 volatile的应用
volatile是轻量级的synchronized
2.2 synchronized的实现原理与应用
synchronized 重量级锁
2.2.2 锁的升级与对比
- 偏向锁
- 轻量级锁
2.3 原子(atomic)操作的实现原理
- 使用总线锁保证原子性
- 使用缓存锁保证原子性
2.4 java如何实现原子操作:
- 锁
- 循环CAS
2.5 总结
java中的大部分容器和框架都依赖于volatile和原子操作的实现原理
第三章 java内存模型
- java内存模型的基础
- java内存模型的顺序一致性
- 同步原语
- java内存模型的设计
3.1 java内存模型的基础
3.1.1 并发编程模型的两个关键问题
- 线程之间如何通信
- 线程之间如何同步
发表回复