我在学习时有一个问题CompletableFuture。将get()/join()方法阻塞调用。如果我不打电话给他们中的任何一个怎么办?
此代码调用get():
// Case 1 - Use get()
CompletableFuture.runAsync(() -> {
try {
Thread.sleep(1_000L);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Hello");
}).get();
System.out.println("World!");
Thread.sleep(5_000L); // Don't finish the main thread
Run Code Online (Sandbox Code Playgroud)
输出:
Hello
World!
Run Code Online (Sandbox Code Playgroud)
此代码既不调用get()也不调用join():
// Case 2 - Don't use get()
CompletableFuture.runAsync(() -> {
try {
Thread.sleep(1_000L);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Hello");
});
System.out.println("World!");
Thread.sleep(5_000L); // For don't finish main thread
Run Code Online (Sandbox Code Playgroud)
输出:
World!
Hello …Run Code Online (Sandbox Code Playgroud)