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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

future promise java_第四章 Future和Promise

發(fā)布時(shí)間:2023/12/10 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 future promise java_第四章 Future和Promise 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Netty是一個(gè)異步網(wǎng)絡(luò)處理框架,在實(shí)現(xiàn)中大量使用了Future機(jī)制,并在Java自帶Future的基礎(chǔ)上,增加了Promise機(jī)制。這兩者的目的都是使異步編程更加方便使用。在閱讀源碼之前,我們需要對(duì)Future的機(jī)制有很清楚的認(rèn)識(shí)。

## 4.1 異步編程模型

### 4.1.1 Future

使用Future機(jī)制時(shí),我們調(diào)用耗時(shí)任務(wù)會(huì)立刻返回一個(gè)Future實(shí)例,使用該實(shí)例能夠以阻塞的方式或者在未來(lái)某刻獲得耗時(shí)任務(wù)的執(zhí)行結(jié)果,還可以添加監(jiān)聽(tīng)事件設(shè)置后續(xù)程序。

```

function Future asynchronousFunction(String arg){

Future future = new Future(new Callable(){

public Object call(){

return null;

}

});

return future;

}

ReturnHandler handler = asynchronousFunction(); // 耗時(shí)函數(shù),但會(huì)立即返回一個(gè)句柄

handler.getResult(); // 通過(guò)句柄可以等待結(jié)果

handler.addListener(); //通過(guò)句柄可以添加完成后執(zhí)行的事件

handler.cancel(); // 通過(guò)句柄取消耗時(shí)任務(wù)

```

### 4.1.2 Promise

在Future機(jī)制中,業(yè)務(wù)邏輯所在任務(wù)執(zhí)行的狀態(tài)(成功或失敗)是在Future中實(shí)現(xiàn)的,而在Promise中,可以在業(yè)務(wù)邏輯控制任務(wù)的執(zhí)行結(jié)果,相比Future,更加靈活。

```

// 異步的耗時(shí)任務(wù)接收一個(gè)promise

function Promise asynchronousFunction(String arg){

Promise promise = new PromiseImpl();

Object result = null;

result = search() //業(yè)務(wù)邏輯,

if(success){

promise.setSuccess(result); // 通知promise當(dāng)前異步任務(wù)成功了,并傳入結(jié)果

}else if(failed){

promise.setFailure(reason); 通知promise當(dāng)前異步任務(wù)失敗了

}else if(error){

promise.setFailure(error); 通知promise當(dāng)前異步任務(wù)發(fā)生了異常

}

}

// 調(diào)用異步的耗時(shí)任務(wù)

Promise promise = asynchronousFunction(promise) ;//會(huì)立即返回promise

//添加成功處理/失敗處理/異常處理等事件

promise.addListener();// 例如,可以添加成功后執(zhí)行的事件

doOtherThings() ; // 繼續(xù)做其他事件,不需要理會(huì)asynchronousFunction何時(shí)結(jié)束

```

在Netty中,Promise繼承了Future,包含了這兩者的功能。

總結(jié)

以上是生活随笔為你收集整理的future promise java_第四章 Future和Promise的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。