av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

java - JDK8的CompletableFuture使用問(wèn)題

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

問(wèn)題描述

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...');//注釋最后一行,無(wú)法得到預(yù)期結(jié)果//TimeUnit.SECONDS.sleep(10);

得到引結(jié)果為:

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

以上代碼如果注釋掉最后一行,無(wú)法得到預(yù)期結(jié)果。

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

問(wèn)題解答

回答1:

見(jiàn)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);也能達(dá)到你預(yù)期結(jié)果

回答2:

搜索一下:守護(hù)線程當(dāng)線程中只剩下守護(hù)線程時(shí)JVM就會(huì)退出,反之還有任意一個(gè)用戶線程在,JVM都不會(huì)退出。我們可以猜測(cè)CompletableFuture.supplyAsync啟動(dòng)了一個(gè)守護(hù)線程,實(shí)際上CompletableFuture內(nèi)部默認(rèn)使用ForkJoinPool,該線程池初始化一個(gè)線程工廠類:

defaultForkJoinWorkerThreadFactory = new DefaultForkJoinWorkerThreadFactory();

查看他的的實(shí)現(xiàn),每次都是創(chuàng)建守護(hù)進(jìn)程。至于為什么一定要主線程sleep就很好理解。

標(biāo)簽: java
相關(guān)文章:
主站蜘蛛池模板: 精品视频一区二区三区在线观看 | 欧美大片久久久 | 久久久久久国产精品 | 亚洲毛片| 午夜三区| 国产精品欧美精品 | 国产精品欧美日韩 | 国产成人自拍一区 | 91精品久久久久久久久久入口 | 亚洲精品久久久久久久久久久 | 久热精品免费 | cao在线| 老司机精品福利视频 | 在线免费观看成年人视频 | 中文字幕第十页 | 五月天天色 | 亚洲一区二区三区免费观看 | 精品二区| 91文字幕巨乱亚洲香蕉 | 做a的各种视频 | 日韩欧美国产精品一区二区三区 | 中文精品一区二区 | 国产伦精品 | 热re99久久精品国产99热 | 精品欧美一区二区三区久久久 | 亚洲精品av在线 | 免费观看av网站 | 亚洲人成人网 | 成人午夜免费福利视频 | 久久精品综合网 | 水蜜桃久久夜色精品一区 | 国产成人av免费看 | 国产视频一区二区 | 欧美日韩一区二区三区四区五区 | 国产日韩中文字幕 | 成人久久| 91国内在线观看 | 欧美精品久久久 | 欧美一区二区在线免费观看 | 成年网站在线观看 | 麻豆av网|