【发布时间】:2019-05-16 16:22:55
【问题描述】:
我正在使用 CompletableFuture.supplyAsync,我不想使用 Forkjoinpool.commonpool,我想将一个池传递给它。
目前我正在创建静态池引用并使用它,因为我不想为每个请求创建池。
我想知道以下 2 种方法中哪种方法最好。
private static ExecutorService processingPool = Executors.newFixedThreadPool(10);
CompletableFuture.supplyAsync( () -> process(),processingPool);
或
private static ForkJoinPool processingPool = new ForkJoinPool(10);
CompletableFuture.supplyAsync( () -> process(),processingPool);
我还读到 ForkJoinPool 在守护进程模式下创建线程。我在所有处理结束时使用“.get”阻塞调用来组合结果。所以我的问题是,如果我在上面使用 forkJoinPool,JVM 会等待完成,因为我使用了“.get”阻塞调用,还是会因为它们是守护线程而退出。
【问题讨论】:
标签: java multithreading executorservice threadpoolexecutor forkjoinpool