前言

在传统的java开发中,说到线程池往往我会想到ThreadPoolExecutor这个方法,但是在工作中发现有大佬使用了ForkJoinPool这个方法,然后在内部的学习发现在高性能的多线程编程中推荐用这个线程池来实现高性能编程。

用法

package Thread.pool.forkjointest;

import java.util.ArrayList;
import java.util.concurrent.ForkJoinPool;

public class ForkJoinTest {
    public static void main(String[] args) throws InterruptedException {
        ArrayList<String> tmp = new ArrayList<String>(){{
            add("mitsubishi");
            add("toyota");
            add("nissan");
            add("honda");
            add("subaru");
            add("mazda");
        }};
        ForkJoinPool forkJoinPool = new ForkJoinPool();
        forkJoinPool.submit(()->tmp.parallelStream().forEach(e->{
            System.out.println(e+"-"+Thread.currentThread().getName());
        })).join();
        forkJoinPool.shutdown();
//        Thread.sleep(3000L);
    }
}

这里为了省事,直接使用了匿名函数的方式来写这个demo,另外最近也在jdk8中的steam流中的使用。
在代码上来看,其实和传统的线程池用法比较相似的,同样是有execute和submit两种方式,同样也会有callable和runnable的区别。