并发编程是Java语言的重要特性之一,在Java平台上提供了许多基本的并发功能来辅助开发多线程应用程序。然而,这些相对底层的并发功能与上层应用程序的并发语义之间并不存在一种简单而直观的映射关系。因此,如何在Java并发应用程序中正确且高效地使用这些功能就成了Java开发人员的关注重点。尤其是在现今业务需求量日渐增大的情况下,理解并发编程更是显得尤为重要。
序
对技术人员来说,我们对技术的态度不能只是“知其然”,更要做到“知其所以然”。如果要真正理解一项技术,分析源码是最直观且最有效的方式。本专题是笔者在之前阅读 java.util.concurrent 包源码时做的一些笔记,在闲暇时间整理了一下分享出来,希望对大家有所帮助。如果大家对此专题文章有任何疑问,欢迎留言提出,如果你发现文章中理解有误的地方,也欢迎大家留言指正。
在开始本专题之前,你首先需要了解的知识:
- 线程基础知识:线程安全性、锁等
- Java内存模型
- 使用过 java.util.concurrent 相关类
目录
必读篇
JUC锁篇
JUC源码分析-JUC锁(二):ReentrantReadWriteLock
JUC源码分析-JUC锁(三):CountDownLatch
集合篇
JUC源码分析-集合篇(一):ConcurrentHashMap
JUC源码分析-集合篇(二):CopyOnWriteArrayList和CopyOnWriteArraySet
JUC源码分析-集合篇(三):ConcurrentSkipListMap和ConcurrentSkipListSet
JUC源码分析-集合篇(四):ConcurrentLinkedQueue
JUC源码分析-集合篇(五):ConcurrentLinkedDeque
JUC源码分析-集合篇(六):LinkedTransferQueue
JUC源码分析-集合篇(七):PriorityBlockingQueue
JUC源码分析-集合篇(八):SynchronousQueue
JUC源码分析-集合篇(九):LinkedBlockingQueue
线程池篇
JUC源码分析-线程池篇(一):ThreadPoolExecutor
JUC源码分析-线程池篇(三):ScheduledThreadPoolExecutor