亚洲免费在线视频-亚洲啊v-久久免费精品视频-国产精品va-看片地址-成人在线视频网

您的位置:首頁技術文章
文章詳情頁

java - JDK8的CompletableFuture使用問題

瀏覽:111日期:2023-10-31 13:05:02

問題描述

CompletableFuture cf1 = CompletableFuture.supplyAsync(() -> { System.out.println('enter into completableFuture()'); try {TimeUnit.SECONDS.sleep(1); } catch (InterruptedException e) {e.printStackTrace(); } System.out.println('start to out of completableFuture()'); return 'a';});System.out.println('do something else');cf1.thenApply(v -> v + ' b').thenAcceptAsync(v ->System.out.println(v));System.out.println('finalize...');//注釋最后一行,無法得到預期結果//TimeUnit.SECONDS.sleep(10);

得到引結果為:

do something elseenter into completableFuture()finalize...start to out of completableFuture()a b

以上代碼如果注釋掉最后一行,無法得到預期結果。

為什么一定要顯式的讓程序sleep10秒呢?

問題解答

回答1:

見CompletableFuture.supplyAsync的javadoc:

Returns a new CompletableFuture that is asynchronously completed by a task running in the ForkJoinPool.commonPool() with the value obtained by calling the given Supplier.

而ForkJoinPool.commonPool()的javadoc:

Returns the common pool instance. This pool is statically constructed; its run state is unaffected by attempts to shutdown or shutdownNow. However this pool and any ongoing processing are automatically terminated upon program System.exit. Any program that relies on asynchronous task processing to complete before program termination should invoke commonPool().awaitQuiescence, before exit.

如果你把最后的sleep改成ForkJoinPool.commonPool().awaitQuiescence(2, TimeUnit.SECONDS);也能達到你預期結果

回答2:

搜索一下:守護線程當線程中只剩下守護線程時JVM就會退出,反之還有任意一個用戶線程在,JVM都不會退出。我們可以猜測CompletableFuture.supplyAsync啟動了一個守護線程,實際上CompletableFuture內部默認使用ForkJoinPool,該線程池初始化一個線程工廠類:

defaultForkJoinWorkerThreadFactory = new DefaultForkJoinWorkerThreadFactory();

查看他的的實現,每次都是創建守護進程。至于為什么一定要主線程sleep就很好理解。

標簽: java
相關文章:
主站蜘蛛池模板: 欧美在线视频免费 | 欧美性巨大欧美 | 亚洲精品久久99久久一区 | a级精品九九九大片免费看 a级毛片免费观看网站 | 欧美一区二区aa大片 | 一区二区三区四区在线播放 | 中文字幕日韩欧美一区二区三区 | 国产精品88 | 自拍第1页 | 国内精品九一在线播放 | 亚洲天堂久久 | 日韩欧美成末人一区二区三区 | 国产99视频精品草莓免视看 | 男女同床爽爽视频免费 | 精品一久久香蕉国产线看播放 | 成人在线一区二区三区 | 91视频啪啪 | 欧美另类专区 | 可以看的毛片网站 | a级毛片免费高清毛片视频 a级毛片免费高清视频 | 在线观看成年视频 | 欧美另类视频在线 | 美国特级毛片 | 波多野结衣在线观看一区二区三区 | 日韩色道 | 久久视频在线观看免费 | 久久福利资源网站免费看 | 欧美巨乳在线观看 | 多人伦精品一区二区三区视频 | 久久精品国产欧美 | 国产日韩精品在线 | 一区二区三区视频免费观看 | 亚洲视频免 | 国产精品成人久久久 | 久久伊人操 | 国产免费人视频在线观看免费 | 国产免费播放一区二区 | 成人免费黄色网址 | 亚洲精品www久久久久久久软件 | 亚洲视频99 | 国产成人99久久亚洲综合精品 |