并发工具类

并发工具类

Future

Future 可以实现异步执行,并且收集结果, 可以在其他线程中获取线程的返回结果
Future 是一个接口,FutureTask 是它的实现类

FutureTask 解读

  1. FutureTask 类实现了 Runable 接口
  2. 所以要想执行 FutureTask 类,需要利用它构造 Thead 类
  3. FutureTask 的构造函数需要一个 Callable 接口, 来定义操作,Callable 相比 Runable 多了返回值
  4. Callable 中的 call 方法,最终会在 Runable 接口的 run 方法中执行

多个 FutureTask 执行流程
FutureTask流程

CountDownLatch

倒计数器,实现异步执行
它可以用来记录线程池中任务完成的情况

  1. 定义任务数量
  2. 每次任务完成,任务数减 1,减 1 操作是同步操作
  3. await 方法,等待计数器归 0,当任务数清零后,任务全部完成

CyclicBarrier

线程栅栏,功能和 CountDownLatch 类似,但是 CyclicBarrier 对象可以重复执行多次

类似于线程池,提供了启动方法,用来指定任务数, 只有任务达到启动数量,才开启任务

Fork/Join 框架

Fork/Join 是一个用来切分任务合并结果的框架
专为可以递归分解成小块的工作而设计的
Fork/Join 将任务分配给线程池中的工作线程,充分利用资源,提高性能

适合数据处理,结果汇总,统计等场景

ForkJoinPool

  • 本质是一个线程池,它的默认的线程数量是 CPU 的核心数量