EventLoopGroup源碼及其父類

1、特殊的EventExecutorGroup,允許註冊處理後的通道以便在事件循環期間進行選擇。
EventLoopGroup

next()方法:返回下一個要使用的EventLoop
register(Channel):使用EventLoop註冊一個Channel,註冊完成後返回的ChannelFuture將會得到通知
register(ChannelPromise):使用ChannelFuture向EventLoop註冊一個通道.通過的ChannelFuture會在註冊完成後收到通知並將被返回
register(Channel, ChannelPromise):使用EventLoop註冊一個Channel,通過的ChannelFuture會在註冊完成後收到通知,該方法已經被 register(ChannelPromise)取代

2、EventExecutorGroup負責通過其next()方法提供EventExecutor的使用,並且還負責處理器生命週期並允許在全球範圍內關閉
shutdownGracefully()存在兩個一個是無參數的,一個是有quietPeriod、timeout、unit三個參數的,分別對應的是文檔中描述的靜默期、等待執行程序的最大時間、靜默期和超時時間的單位

3、ScheduledExecutorService:延遲/週期執行線程池
schedule(Runnable)
schedule(Callable)
scheduleAtFixedRate()
scheduleWithFixedDelay()

4、ExecutorService:線程池服務
invokeAll(tasks)
invokeAll(tasks, timeout, unit)
兩者都會阻塞,需要等待所有任務完成後統一返回,一個方面是內存持有時間長,另一個方面是響應性也有一定影響.方法二的超時時間指的是所有的任務,處理一個任務的容器並返回個
Future容器,兩容器具有相同的數據結構。
將Future添加到返回容器中這樣可使用任務容器的迭代器從而調用者可將它表現的Callable和Future關聯起來.當所有的任務完成後調用線程被中斷時或者超過時限時候,限時版本
的invokeAll都會返回結果,超過時限後任何未完成的任務都會被取消.

invokeAny(tasks)
invokeAny(tasks, timeout, unit)
啓動多個線程去各自負責自己區域這樣可以提升速度.但希望只要其中一個線程找到符合要求的數據就立即返回不用再讓其他線程繼續執行下去可節省CPU使用率.invokeAny只要其中
一個線程執行完就立即返回其他線程會退出不佔用CPU

5、Executor:線程池
void execute(Runnable command);在將來某個時候執行給定的命令,該命令可在新線程、池化線程或調用線程中執行,具體由執行程序實現決定

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章