一、前言

  在學習了ChannelHandler和ChannelPipeline的有關細節(jié)后,接著學習Netty的EventLoop和線程模型。

二、EventLoop和線程模型

  2.1. 線程模型

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

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

    · 當線程完成工作時,該線程又返回至空閑鏈表,可再進行復用。

  該模式如下圖所示。

  photoshop培訓,電腦培訓,電腦維修培訓,移動軟件開發(fā)培訓,網(wǎng)站設計培訓,網(wǎng)站建設培訓

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

  2.2. EventLoop接口

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

photoshop培訓,電腦培訓,電腦維修培訓,移動軟件開發(fā)培訓,網(wǎng)站設計培訓,網(wǎng)站建設培訓

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

延伸閱讀

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