簡體   English   中英

為什么不執行CompletableFuture.runAsync?

[英]Why CompletableFuture.runAsync is not executed?

我認為主線程必須在子線程之后結束。但是下面的代碼顯示了在打印“異步結束”之前完成的過程。原因是什么?有人可以解釋嗎?

import java.util.concurrent.CompletableFuture;

public class Test {
    public static void main(String[] args) {
        CompletableFuture.runAsync(() -> {
            try {
                System.out.println("async start");
                Thread.sleep(3000);
                System.out.println("async end");
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        });

        System.out.println("main end");
    }
}

它已執行,您只是在等待結果。

CompleteableFuture.runAsync()的Javadoc說:

返回一個新的CompletableFuture,它由運行給定操作的ForkJoinPool.commonPool()運行的任務異步完成。

ForkJoinPool.commonPool()的Javadoc說:

任何在程序終止之前依賴異步任務處理完成的程序都應在退出之前調用commonPool().awaitQuiescence()

因此,調用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM