如何在CompletableFuture.supplyAsync(Supplier <u>供应商)方法中使用所需数量的工作线程设置ForkJoinPool?

时间:2016-04-12 09:54:27

标签: java multithreading completable-future forkjoinpool

根据Oracle的说法,

  

静态CompletableFuture supplyAsync(供应商供应商)   返回由a异步完成的新CompletableFuture   使用获得的值在 ForkJoinPool.commonPool()中运行的任务   通过致电给定的供应商。

     

static CompletableFuture supplyAsync(供应商供应商,执行人   executor)返回异步的新CompletableFuture   由在给定执行程序中运行的任务完成的值   通过致电给定的供应商获得。

如果我使用“静态CompletableFuture supplyAsync(供应商供应商)”方法,则默认情况下使用 ForkJoinPool.commonPool()。这将返回一个ForkJoinPool,其工作线程数等于正在运行的计算机中的可用核心数。

但是,我想使用ForkJoinPool和我自定义的工作线程数。使用ForkJoinPool.commonPool()我不能这样做。

那么如何使用我所声明的ForkJoinPool使用 CompletableFuture.supplyAsync 方法,使用我想要的工作线程数?

1 个答案:

答案 0 :(得分:7)

ForkJoinPool实施Executor

因此,您可以像这样编写代码:

int threadCount = 3;
ForkJoinPool myPool = new ForkJoinPool(threadCount);
CompletableFuture cf = CompletableFuture.supplyAsync(mySup, myPool);