最近學(xué)習(xí)netty源代碼,inEventLoop方法是很關(guān)鍵的地方,保證相關(guān)處理在一個(gè)線程進(jìn)行。
一般線程池的實(shí)現(xiàn),都是一組線程的概念,但netty的實(shí)現(xiàn)比較特別。
EventLoopGroup里維護(hù)了一組EventLoop對(duì)象,每個(gè)對(duì)象在第一次執(zhí)行的時(shí)候登記了其thread,這樣inEventLoop就是進(jìn)行判斷,當(dāng)前線程是否與其對(duì)象存儲(chǔ)的是否是一個(gè)!
談到EventExcutorGroup和EventExcutor的關(guān)系,看起來(lái)還是復(fù)雜的,EventExcutor繼承了EventExcutorGroup,但EventExcutorGroup有維護(hù)了一組EventExcutor。我是這么理解的,EventExcutor就像是一個(gè)“光桿組長(zhǎng)”,工作只能自己干,它沒(méi)有組員,和現(xiàn)實(shí)生活中也是非常一致的。