他们是两个不同的东西,ForkJoinTask
是一个可以提交给ForkJoinPool
, CompletableFuture
是一个可以与任何人合作的承诺Executor
并且执行人不需要是ForkJoinPool
,
然而确实如此,常见的ForkJoinPool
如果您未指定任何内容,则为默认值,例如:
CompletableFuture.supplyAsync(()-> supplier);
使用ForkJoinPool
如果你没有通过Executor
。还有另一种overload
这需要一个Executor
.
CompletableFuture.supplyAsync(()-> supplier,executor);
Async
,这是一个static
上课于CompletableFuture
延伸ForkJoinTask<Void>
,但它不需要是ForkJoinTask
,来自文档Async
/** 基类可以充当 FJ 或普通 Runnable */
abstract static class Async extends ForkJoinTask<Void>
implements Runnable, AsynchronousCompletionTask
它还可以Runnable
and a AsynchronousCompletionTask
只是旁注:ForkJoinTask
, ForkJoinPool
, ForkJoin...
类是在 1.7 中添加的,而不是在 1.8 中添加的