一、前言

  在學(xué)習(xí)了ChannelHandler和ChannelPipeline的有關(guān)細(xì)節(jié)后,接著學(xué)習(xí)Netty的EventLoop和線程模型。

二、EventLoop和線程模型

  2.1. 線程模型

  線程池可通過(guò)緩存和復(fù)用已有線程來(lái)提高系統(tǒng)性能,基本的緩沖池模式可描述如下:

    · 從池中空閑鏈表中選取線程,然后將其分配賦予給已提交的任務(wù)。

    · 當(dāng)線程完成工作時(shí),該線程又返回至空閑鏈表,可再進(jìn)行復(fù)用。

  該模式如下圖所示。

  photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

  池化和復(fù)用線程是針對(duì)每個(gè)任務(wù)都需要?jiǎng)?chuàng)建和銷毀線程的改進(jìn),但還是需要進(jìn)行上下文切換,并且隨著線程數(shù)量的增加,其負(fù)擔(dān)也會(huì)增加。同時(shí),在高并發(fā)下也會(huì)出現(xiàn)很多線程問(wèn)題。

  2.2. EventLoop接口

  任何網(wǎng)絡(luò)框架的基本功能都是運(yùn)行任務(wù)來(lái)處理在連接聲明周期中所發(fā)生的事件,相應(yīng)的編程結(jié)構(gòu)通常被稱為事件循環(huán)。事件循環(huán)的基本思想如下代碼所示,每個(gè)任務(wù)都是一個(gè)Runnable實(shí)例。  

photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

while (!terminated) {
    List<Runnable> readyEvents = blockUntilEventsReady();    for (Runnable ev: readyEvents) {
        ev.run();
    }
}

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式