#所以第一步,new出來乙個eventloopgroup的時候,就是按照cpu核心數建立相對應數量的eventloop,在每乙個eventloop裡面初始化出乙個selector,方便後面channel將關注的事件註冊到上面,而nioeventloop裡面有乙個專門的run方法,在乙個for迴圈裡面,不斷呼叫selector相關方法,處理各種事件集,netty這裡有乙個小小的技巧,因為nioeventloop除了處理io事件之外,有一些系統的任務也是由它處理,需要進行區分,引入了乙個ioratio引數,即處理io事件的比例,根據比例來分配資源處理io事件,所以eventloop會判斷執行當前任務的執行緒是不是eventloop本身的執行緒,預設情況ioratio是50%,即一半一半,eventloop裡面包裝了乙個執行緒,但是這個執行緒不是在nioeventloop中宣告的,而是在它的父類singlethreadeventexecutors,裡面宣告了thread變數和taskqueue佇列,而eventloopgroup裡面execute會建立乙個執行緒並執行,但是還沒有和eventloop裡面的執行緒掛鉤,在**掛鉤?
2.拿到serverbootstrap 這個伺服器啟動必備的例項
3.把channel、通訊位址、handler這些引數set到serverbootstrap 中,唯一有點的區別的是channel,它設定的class物件,是反射的方法拿到每乙個channel的相關例項
b.
group
(group)
.channel
(nioserversocketchannel.
class).
localaddress
(new
inetsocketaddress
(port)
.childhandler
(new
channelinitializer
()})
;
4.channelfuture f = b.bind().sync();
其中bind方法是非常關鍵的,是關注的重點,它是有它的父類abstractbootstrap實現的,而bind方法又跳進dobind方法,
第18章 網路程式設計
第18章 網路程式設計 計算機上面可以安裝非常多的應用軟體,那麼如何區分這些軟體?需要通過埠號來區分,埠號,相當與房子中開的們.一 埠號在計算機裡面有2個位元組那麼大,因此埠號的取值範圍 0 65535 共65536個 但是1024以下的埠號,通常是計算機內建軟體埠 類似於現實生活中的短號號碼 12...
letecode 程式設計學習(18)
給定乙個無序的陣列,找出陣列在排序之後,相鄰元素之間最大的差值。如果陣列元素個數小於 2,則返回 0。示例 1 輸入 3,6,9,1 輸出 3 解釋 排序後的陣列是 1,3,6,9 其中相鄰元素 3,6 和 6,9 之間都存在最大差值 3。示例 2 輸入 10 輸出 0 解釋 陣列元素個數小於 2,...
JAVA知識點總結 18 網路程式設計
一.網路程式設計的三要素 1.ip 乙個計算機標識,每個計算機只有乙個,不可重複 2.埠 每個程式會對應乙個埠,用來通訊,有效埠 0 65535,其中 0 1024 系統使用或保留埠 3.協議 tcp,udp 協議tcp和udp的區別 udp 把資料打成乙個資料報,不需要建立鏈結 資料報大小有限制,...