Unsafe是托委訪問(wèn)socket,那么Channel是直接提供給開發(fā)者使用的
Channel 主要有兩個(gè)實(shí)現(xiàn) NioServerSocketChannel同NioSocketChannel 致于其它不常用不在研究范圍內(nèi)
NioServerSocketChannel 是給server用的,程序由始至終只有一個(gè)NioServerSocketChannel
NioSocketChannel 是給客戶端用的,每個(gè)連接生成一個(gè)NioSocketChannel 對(duì)象
NioSocketChannel同NioSocketChannel的繼承關(guān)系
NioSocketChannel -> AbstractNioByteChannel -> AbstractNioChannel -> AbstractChannel
NioServerSocketChannel -> AbstractNioMessageChannel-> AbstractNioChannel -> AbstractChannel
小提示:如果看文字不夠直觀可以在eclipse里按快捷鍵 選擇類 ctrl+t
channel有unsafe相應(yīng)的實(shí)現(xiàn)類,反之亦是。其實(shí)功能是很簡(jiǎn)單的,劃分太多對(duì)象目的是對(duì)某部分功能重用,有時(shí)也可能因過(guò)渡設(shè)計(jì)造成
對(duì)于channel我們主要分析 I/O read/write操作
NioServerSocketChannel AbstractNioMessageChannel SelectorProvider DEFAULT_SELECTOR_PROVIDER = (= NioServerSocketChannelConfig( doReadMessages(List<Object> bu