ForkJoinPool的优势在于,可以充分利用多cpu,多核cpu的优势,把一个任务拆分成多个“小任务”,把多个“小任务”放到多个处理器核心上并行执行;当多个“小任务”执行完成之后,再将这些执行结果合并起来即可。
补充:为什么不适合执行有block比如有io的任务
线程block的时候,线程池会调度线程池队列中的其他未线程运行,这是ExecutorService的机制;
但是ForkJoinPool中的ForkJoinWorkerThread工作机制是不停执行本地workQueue中的task,task是一个个取的,顺序执行,没有塞回去的动作,并不会因为某个task引起block后而换个task继续执行;