并发工具类
Future
Future 可以实现异步执行,并且收集结果, 可以在其他线程中获取线程的返回结果
Future 是一个接口,FutureTask 是它的实现类
FutureTask 解读
- FutureTask 类实现了 Runable 接口
- 所以要想执行 FutureTask 类,需要利用它构造 Thead 类
- FutureTask 的构造函数需要一个 Callable 接口, 来定义操作,Callable 相比 Runable 多了返回值
- Callable 中的 call 方法,最终会在 Runable 接口的 run 方法中执行
多个 FutureTask 执行流程
CountDownLatch
倒计数器,实现异步执行
它可以用来记录线程池中任务完成的情况
- 定义任务数量
- 每次任务完成,任务数减 1,减 1 操作是同步操作
- await 方法,等待计数器归 0,当任务数清零后,任务全部完成
CyclicBarrier
线程栅栏,功能和 CountDownLatch 类似,但是 CyclicBarrier 对象可以重复执行多次
类似于线程池,提供了启动方法,用来指定任务数, 只有任务达到启动数量,才开启任务
Fork/Join 框架
Fork/Join 是一个用来切分任务和合并结果的框架
专为可以递归分解成小块的工作而设计的
Fork/Join 将任务分配给线程池中的工作线程,充分利用资源,提高性能
适合数据处理,结果汇总,统计等场景
ForkJoinPool
- 本质是一个线程池,它的默认的线程数量是 CPU 的核心数量