ForkJoinPool是为递归操作而设计的。例如,这可能是像MergeSort这样的分而治之算法。在这样的算法中,一个线程通常会等待孩子们完成。
使用ForkJoin的工作共享而不仅仅是普通线程池的队列有什么好处?是";工作分配";从ForkJoinPool更好地从线程池的队列中获取任务?这不是在偷东西吗?
这就是";工作分配";进来了。工作会被那些真正有工作要做的人从等待的线程中窃取。
如果有固定数量的线程不会生成新的线程,那么您应该只使用一个普通的ExecutorService线程池。