代码中使用了 CompletableFuture.supplyAsync(...) 方法,这个方法的特点是:会在独立的线程中执行传入的任务。
默认情况下,supplyAsync 会使用 ForkJoinPool.commonPool()(一个共享的线程池)中的线程来执行任务,而不是主线程。因此:
tures对应的() -> a > b任务会在一个线程中执行tures1对应的() -> a < b任务会在另一个线程中执行(也可能与上一个任务复用线程池中的线程,但本质上是异步执行)- 主线程则会继续执行后续代码,并通过
join()等待所有任务完成 CompletableFuture是 Java 中用于简化异步编程(多线程协作)的工具类。
public static void main(String[] args) {
int a = 100;
int b = 200;
CompletableFuture<Boolean> trues = CompletableFuture.supplyAsync(() -> a > b);
CompletableFuture<Boolean> trues1 = CompletableFuture.supplyAsync(() -> a < b);
CompletableFuture<Void> voidCompletableFuture = CompletableFuture.allOf(trues, trues1);
voidCompletableFuture.thenRun(() -> {
// 使用join()方法获取Future的结果
boolean result1 = trues.join();
boolean result2 = trues1.join();
if (result1 && result2) {
System.out.println("多线程");
} else {
System.out.println("条件不满足,result1=" + result1 + ", result2=" + result2);
}
}).join();
}
367

被折叠的 条评论
为什么被折叠?



