Netty的Channel, Event 和 I/O

2018-08-08 10:26 更新

Netty是一個(gè)異步事件驅(qū)動(dòng)的NIO框架,Netty的所有IO操作都是異步非阻塞的。Netty 實(shí)際上是使用 Threads(多線程)處理 I/O 事件,熟悉多線程編程的讀者可能會(huì)需要關(guān)注同步代碼。但是這么做不好,因?yàn)橥綍?huì)影響程序的性能,Netty 的設(shè)計(jì)保證程序處理事件不會(huì)有同步。圖 Figure 3.1 展示了,你不需要在 Channel 之間共享 ChannelHandler 實(shí)例的原因:

Figure%203

Figure 3.1

該圖顯示,一個(gè) EventLoopGroup 具有一個(gè)或多個(gè) EventLoop。想象 EventLoop 作為一個(gè) Thread 給 Channel 執(zhí)行工作。 (事實(shí)上,一個(gè) EventLoop 是勢(shì)必為它的生命周期一個(gè)線程。)

當(dāng)創(chuàng)建一個(gè) Channel,Netty 通過 一個(gè)單獨(dú)的 EventLoop 實(shí)例來注冊(cè)該 Channel(并同樣是一個(gè)單獨(dú)的 Thread)的通道的使用壽命。這就是為什么你的應(yīng)用程序不需要同步 Netty 的 I/O操作;所有 Channel 的 I/O 始終用相同的線程來執(zhí)行。

更多關(guān)于 EventLoop 和 EventLoopGroup的知識(shí)我們將會(huì)在第15章討論。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)