理解ForkJoinPool

理解ForkJoinPool

前言

ForkJoinPool是Java Executor框架的一个实现,它是对于ThreadPoolExecutor的补充,主要使用场景是处理比较大的异步计算任务。

-w678

理解

为什么适合大的异步任务呢?相对于普通的线程池,维护了一个任务队列,一旦有任务到达,空闲的线程就会从任务队列中弹出一个任务进行处理,如果这个任务执行的时间比较长,那么就不能充分使用线程池里面的其它空闲线程。
ForkJoinPool的亮点在于对于一个耗时较长的任务,拆成若干个子任务,并将这些任务提交到多个任务队列中(ForkJoinPool线程池中的每个线程都维护了一个队列),最后将结果合并返回。
当然这个任务的拆分并不是由框架完成,需要我们自己的代码中实现。

-w688

注意

  1. fork()是提交子任务,join()返回计算结果。这里会阻塞
  2. ForkJoinPool不适用于本身执行耗时短的任务

参考

下面这篇博客对ForkJoinPool的介绍比较详细

1. ForkJoinPool入门篇

# java

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×