日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java 9 CompletableFuture 进化小脚步

發布時間:2025/4/16 java 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java 9 CompletableFuture 进化小脚步 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

簡介

Java 9附帶了對CompletableFuture類的一些更改。這些更改是作為JEP 266的一部分引入的,以便解決自JDK 8引入以來的一些問題,更具體地說,支持延遲和超時,抽象出一個工具類和一些實用方法。

代碼方面,API提供了八種新方法和五種新的靜態方法。根據Open JDK描述,為了實現這樣的添加,大約2400個代碼行中的1500處被更改。

實例API添加

如上所述,實例API附帶了八個新增功能,它們是:

  • Executor defaultExecutor()
  • CompletableFuture newIncompleteFuture()
CompletableFuture copy() CompletionStage minimalCompletionStage() CompletableFuture completeAsync(Supplier<? extends T> supplier, Executor executor) CompletableFuture completeAsync(Supplier<? extends T> supplier) CompletableFuture orTimeout(long timeout, TimeUnit unit) CompletableFuture completeOnTimeout(T value, long timeout, TimeUnit unit)

defaultExecutor()方法

API

Executor defaultExecutor() 復制代碼

返回默認的Executor用于那些沒有指定異步方法的調用者。

new CompletableFuture().defaultExecutor()復制代碼

這可以由返回執行線程的子類覆蓋,該執行線程至少提供一個獨立的線程。

newIncompleteFuture()方法

API

CompletableFuture <U> newIncompleteFuture() 復制代碼

該newIncompleteFuture,也被稱為“虛擬構造函數”,是用來獲得相同類型的新completable實例。

new CompletableFuture().newIncompleteFuture() 復制代碼

當子類化CompletableFuture時,此方法特別有用,主要是因為它幾乎在所有返回新的CompletionStage的方法內部使用,允許子類控制此類方法返回的子類型。

copy()方法

API

CompletableFuture <T> copy() 復制代碼

此方法返回一個新的CompletableFuture,其中:

當原來的CompletableFuture是執行正常的,那么copy之后的CompletableFuture也會是正常的。

當原來的CompletableFuture拋出了異常 Exception X,那么copy之后的CompletableFuture也會出現 Exception X

new CompletableFuture().copy() 復制代碼

此方法可用作“防御性復制”的形式,能夠在CompletableFuture的特定實例上安排依賴操作。

minimalCompletionStage()方法

API

CompletionStage <T> minimalCompletionStage() 復制代碼

此方法返回一個新的CompletionStage,其行為方式與copy方法描述的完全相同,然而,在每次嘗試檢索或設置已解析的值時,此類新實例都會拋出UnsupportedOperationException。

new CompletableFuture().minimalCompletionStage() 復制代碼

可以使用CompletionStage API 上提供的toCompletableFuture方法檢索具有所有可用方法的新CompletableFuture。

completeAsync()方法

該completeAsync方法應當用于完成CompletableFuture異步使用由給定的值Supplier提供。

API

CompletableFuture<T> completeAsync(Supplier<? extends T> supplier, Executor executor) CompletableFuture<T> completeAsync(Supplier<? extends T> supplier) 復制代碼

這兩個重載方法之間的區別在于存在第二個參數,其中可以指定運行任務的Executor。如果未提供,則將使用默認執行程序(由defaultExecutor方法返回)。

orTimeout()方法

API

CompletableFuture<T> orTimeout(long timeout, TimeUnit unit) 復制代碼new CompletableFuture().orTimeout(1, TimeUnit.SECONDS) 復制代碼

除非在指定的超時之前完成CompletableFuture,否則使用TimeoutException異常解析CompletableFuture。

completeOnTimeout()方法

API

CompletableFuture<T> completeOnTimeout(T value, long timeout, TimeUnit unit) 復制代碼new CompletableFuture().completeOnTimeout(value, 1, TimeUnit.SECONDS) 復制代碼

除非在指定的超時之前完成,否則通常使用指定的值完成CompletableFuture。

static API

還添加了一些實用方法。他們是:

  • Executor delayedExecutor(long delay, TimeUnit unit, Executor executor)
  • Executor delayedExecutor(long delay, TimeUnit unit)
  • CompletionStage completedStage(U value)
CompletionStage failedStage(Throwable ex) CompletableFuture failedFuture(Throwable ex)

方法延遲執行

Executor delayedExecutor(long delay, TimeUnit unit, Executor executor) Executor delayedExecutor(long delay, TimeUnit unit) 復制代碼

返回一個新的Executor,它在給定的延遲之后將任務提交給給定的基本執行程序(如果非正數則沒有延遲)。每次延遲都在調用返回的執行程序的execute方法時開始。如果未指定執行程序,則將使用默認執行程序(ForkJoinPool.commonPool())。

方法completedStage和failedStage

API

<U> CompletionStage<U> completedStage(U value) <U> CompletionStage<U> failedStage(Throwable ex) 復制代碼

此實用程序方法返回已解析的CompletionStage實例,這些實例通常使用值(completedStage)完成,或者使用給定的異常完成異常(failedStage)。

方法failedFuture

API

<U> CompletableFuture<U> failedFuture(Throwable ex) 復制代碼

failedFuture方法添加了指定已完成的異常CompleatebleFuture實例的功能。

示例用例

將展示一些有關如何使用某些新API的示例。

Delay

此示例將說明如何將具有特定值的CompletableFuture的完成延遲一秒。這可以通過將completeAsync方法與delayedExecutor一起使用來實現。

CompletableFuture<Object> future = new CompletableFuture<>(); future.completeAsync(() -> input, CompletableFuture.delayedExecutor(1, TimeUnit.SECONDS)); 復制代碼

completeOnTimeout

實現延遲結果的另一種方法是使用completeOnTimeout方法。此示例定義了一個CompletableFuture,如果在1秒后仍未解析,則將使用給定輸入解析該CompletableFuture。

CompletableFuture<Object> future = new CompletableFuture<>(); future.completeOnTimeout(input, 1, TimeUnit.SECONDS); 復制代碼

Timeout

另一種可能性是超時,它使用TimeoutException異常地解決了未來。例如,如果在此之前沒有完成,則在1秒后使CompletableFuture超時。

CompletableFuture<Object> future = new CompletableFuture<>(); future.orTimeout(1, TimeUnit.SECONDS); 復制代碼

結論

總之,Java 9附帶了一些CompletableFuture API,它現在可以更好地支持子類化,由于newIncompleteFuture虛擬構造函數,可以控制大多數CompletionStage API中返回的CompletionStage實例。

如前所示,它肯定能更好地支持延遲和超時。添加的實用程序方法遵循合理的模式,為CompletableFuture提供了指定已解析實例的便捷方式。

總結

以上是生活随笔為你收集整理的Java 9 CompletableFuture 进化小脚步的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 91亚洲国产成人精品一区二三 | 亚洲天堂中文 | 久久老司机精品视频 | av成人在线看 | 久久久少妇 | japanese在线观看 | www色视频| 国产热视频| 国产伦精品一区二区三区精品 | 四虎国产精品永久在线国在线 | 四虎新网址 | 欧美成人精品激情在线视频 | 亚洲视频一 | 国产xxx| 极品人妻一区二区三区 | 日韩精品电影一区二区三区 | 国产精品99精品久久免费 | 无码人妻精品一区二区三区99v | 超碰在线观看av | 五月天婷婷色综合 | 亚洲三页 | 人妻少妇久久中文字幕 | 日本成人一二三区 | 日本中文不卡 | 在线看污视频 | 国产av国片偷人妻麻豆 | 少妇又色又紧又大爽又刺激 | 最近免费中文字幕大全免费版视频 | 久久色在线 | 成年人在线视频观看 | 久久久无码精品亚洲无少妇 | 日韩a视频 | 毛片91| 日韩一级免费视频 | 综合精品国产 | 国产精品宾馆在线精品酒店 | 亚洲精品字幕在线观看 | jzzijzzij日本成熟少妇 | 三级影片在线免费观看 | 含羞草一区二区 | 久久久精品久久 | 午夜在线精品 | 综合网五月 | 波多野结衣在线一区二区 | 日本a√在线观看 | 日本中文字幕视频在线 | 超碰中文字幕在线 | 日本乱偷人妻中文字幕在线 | 91精品久久久久久久久久久 | av一区二区三区 | 东北少妇露脸无套对白 | 青青啪啪 | 久久五 | 精品二区在线 | 91在线短视频 | 亚洲精品日韩综合观看成人91 | 亚洲激情视频在线观看 | 欧美乱操| 国产免费av一区二区三区 | 四色在线 | 超碰精品在线观看 | 午夜秋霞| 成年网站 | 国产精品麻豆成人av电影艾秋 | 台湾a级片 | 国产尤物 | 国产又粗又硬又长又爽的演员 | 美日韩中文字幕 | 90岁老太婆乱淫 | av网子| 一本大道久久久久精品嫩草 | 夜夜嗨av一区二区三区四区 | 一区二区三区日韩精品 | 日韩精品视频免费 | 香蕉国产精品视频 | 小泽玛利亚一区二区三区视频 | 老牛嫩草二区三区观影体验 | 欧洲美女粗暴牲交免费观看 | 国产精品一区二区人人爽 | 日韩精品五区 | 日韩精品无码一区二区三区 | 欧美日韩高清免费 | 天堂网久久 | 国产一二三视频 | 精品国产专区 | 真人毛片97级无遮挡精品 | 亚洲色图第1页 | 亚洲激情在线 | 色女综合 | 日韩一区二区三区在线视频 | 中文字幕在线观看一区二区三区 | 国产小视频在线免费观看 | 国产精品波多野结衣 | 成人写真福利网 | 双性尿奴穿贞c带憋尿 | www.午夜| 久久成人动漫 | 欧美高大丰满少妇xxxx | 五月亚洲综合 |