并发编程的知识比较零散,相关度很低,总是给人一种感觉,“学习了很多相关知识,可还是没搞懂是怎么回事”。那么,先一起来梳理一下Java并发编程的知识脉络,后续会对每块一一进行讲解。
1 并发基础
- 并发编程基本概念,如:死锁、饥饿与公平等;
- 线程的创建、运行、调度。
2 并发理论
- 并发编程要解决的三大问题;
- 可见性与有序性问题的根源 - 重排序;
- Java内存模型(JMM),理解JMM如何解决这些问题以实现并发编程的。
3 并发关键字
- synchronized、volatile、final关键字的作用,解决了什么问题及其实现原理。
4 CAS原子操作
- 并发编程的基础与核心 - CAS,实现原理及Java中的CAS原子操作。
5 Lock体系
- JDK的Lock对于synchronized有哪些优势;
- Lock如何通过AQS与LockSupport工具实现的;
- Lock的使用。
6 并发容器
- java.util.concurrent包下提供的并发容器:ConcurrentHashMap、CopyOnWriteArrayList、ConcurrentLinkedQueue、ThreadLocal、阻塞队列的用法及实现原理。
7 并发工具
- java.util.concurrent包下提供的并发工具:倒计时器CountDownLatch、循环栅栏CyclicBarrier、资源访问控制Semaphore、数据交换Exchanger的用法及实现原理。
8 线程池(Executor体系)
- 线程池ThreadPoolExecutor和ScheduledThreadPoolExecutor的用法,线程池执行流程和原理。
附 知识框架