根据Oracle的说法,
静态CompletableFuture supplyAsync(供应商供应商) 返回由a异步完成的新CompletableFuture 使用获得的值在 ForkJoinPool.commonPool()中运行的任务 通过致电给定的供应商。
static CompletableFuture supplyAsync(供应商供应商,执行人 executor)返回异步的新CompletableFuture 由在给定执行程序中运行的任务完成的值 通过致电给定的供应商获得。
如果我使用“静态CompletableFuture supplyAsync(供应商供应商)”方法,则默认情况下使用 ForkJoinPool.commonPool()。这将返回一个ForkJoinPool,其工作线程数等于正在运行的计算机中的可用核心数。
但是,我想使用ForkJoinPool和我自定义的工作线程数。使用ForkJoinPool.commonPool()我不能这样做。
那么如何使用我所声明的ForkJoinPool使用 CompletableFuture.supplyAsync 方法,使用我想要的工作线程数?
答案 0 :(得分:7)
ForkJoinPool
实施Executor
。
因此,您可以像这样编写代码:
int threadCount = 3;
ForkJoinPool myPool = new ForkJoinPool(threadCount);
CompletableFuture cf = CompletableFuture.supplyAsync(mySup, myPool);