一直想着对java.util.concurrent (JUC) 进行一次详细的研究,自己也整理了一些相关的知识,却始终没有去阅读源码相关的东西,所以最近想去看一看 JUC 相关的源码,也去看了 “梧留柒” 的博客,里面比较详细的介绍了JUC 中的接口和实现类的源码,所以打算通过博客来记录下相关的知识以此来反复学习。
我们来看下包结构(基于JDK7)
大致我们可以分为
1. Aomtic 原子数据类型
这部分都被放在java.util.concurrent.atomic这个包里面,实现了原子化操作的数据类型,包括 Boolean, Integer, Long, 和Referrence这四种类型以及这四种类型的数组类型。
2. 锁
这部分都被放在java.util.concurrent.lock这个包里面,实现了并发操作中的几种类型的锁
3. java 并发集合
这部分实现的数据结构主要有List, Queue和Map。
4. 阻塞队列/线程池
Queue 队列
Callable 被执行的任务
Executor 执行任务
Future 异步提交任务的返回数据
Completion 异步非阻塞
5. 并发工具类
这部分主要是对线程集合的管理的实现,有CyclicBarrier, CountDownLatch,Exchanger等一些类