ChannelFuture非同步模型

2021-09-29 21:29:47 字數 681 閱讀 3038

netty中的操作,如bind、connect、write,會返回乙個channelfuture。

呼叫者並不能立刻獲得結果,而是通過future-listener機制,使用者可以主動獲取或等待通知機制獲取io操作結果。

netty的非同步模型建立在future和callback之上的。

假設有個方法func,計算非常耗時,等待顯然不合適。那麼可以在呼叫func時,返回乙個future物件,後續可以通過future監控func的處理過程。

future說明

channelfuture cf = bootstrap.

bind

(6666).

sync()

;// 新增listener

cf.addlistener

(new

channelfuturelistener()

else}}

);

監聽事件完成,就會執行operationcomplete,可以通過issuccess、iscancelled、isdone等來判斷執行結果。

相比傳統的阻塞io,執行io操作就會阻塞在這裡,直到完成。

非同步的優點就是不會阻塞,執行緒在io期間可以做些其他事情。在高併發的情況下會更穩點和更高的吞吐量。

非同步 非同步任務

非同步任務 記錄一下學習完springboot後進行使用非同步方法時的筆記 service層 author yesijie date 2019 11 29 15 25 service public class asyncc catch interruptedexception e system.ou...

anroid之非同步不如非同步

executeonexecutor asynctask.thread pool executor 使用自定義的corepoolsize為7的executor executors.newfixedthreadpool 7 使用未設限制的executor executors.newcachedthrea...

非同步通知與非同步I O

非同步通知 很簡單,一旦裝置準備好,就主動通知應用程式,這種情況下應用程式就不需要查詢裝置狀態,這是不是特像硬體上常提的 中斷的概念 上邊比較準確的說法其實應該叫做 訊號驅動的非同步i o 訊號是在軟體層次上對中斷機制的一種模擬。阻塞 i o意味著一直等待裝置可訪問再訪問,非阻塞i o意味著使用po...