该
thenComposeAsync
方法为您的执行程序放置一个新任务,该任务将捕获单线程并等待您Task 2
完成。但这没有更多的线程可以运行。您可以改用thenCompose
在同一线程中执行的方法,Task 1
以避免死锁。一个线程正在执行
Task 1
,Task 2
第二个线程正在处理两个线程的结果。
注意:
CompletableFuture最好与配合使用
ForkJoinPool,以更有效地处理产生新任务的任务。默认
ForkJoinPool用Java
8中添加了对这一目的,默认情况下使用,如果你不指定执行运行任务。
这是有关这些新功能的亮点及其工作方式的精彩演示:Java 8 Futures的Reactive Programming
Patterns。



