歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Netty的ChannelFuture

在Netty中的所有的I/O操作都是異步執行的,這就意味著任何一個I/O操作會立刻返回,不保證在調用結束的時候操作會執行完成。因此,會返回一個ChannelFuture的實例,通過這個實例可以獲取當前I/O操作的狀態。

ChannelFuture為完成或未完成狀態。完成和未完成可對應的各種I/O操作結果如下所示

* + ---------------------------+

* | Completed successfully | * + ---------------------------+ * + ----> isDone() = <b>true </b> | * +--------------------------+ | | isSuccess() = <b>true</b> | * | Uncompleted | | +===========================+ * +--------------------------+ | | Completed with failure | * | isDone() = <b>false</b> | | +--------------------------- + * | isSuccess() = false | ----+----> isDone() = <b>true </b> | * | isCancelled() = false | | | getCause() = <b>non- null</b> | * | getCause() = null | | +===========================+ * +--------------------------+ | | Completed by cancellation | * | + ---------------------------+ * + ----> isDone() = <b>true </b> | * | isCancelled() = <b>true</b> | * + ---------------------------+

通過ChannelFuture可以了解I/O操作的一些額外的詳細信息。

當然,也提供了阻塞當前線程等待I/O執行結果的方法,就是awaitUninterruptibly 。

與這個接口緊密相關的是ChannelFutureListener,為特定的事項添加監聽器。當事件發生時,會出發監聽器指定相應的動作。

最後一點要指出調用await系列方法指定的等待超時時間和I/O超時時間之間是沒有特定關系的。如果沒有設置I/O超時時間,那麼可能在await方法超時之後,future方法其實是沒有執行完的。

Netty 的詳細介紹:請點這裡
Netty 的下載地址:請點這裡

Copyright © Linux教程網 All Rights Reserved