Buffer:數組
緩衝區是一個容器對象,咱們使用緩衝區處理數據的時候,全部的數據都是用緩衝區進行處理的,在讀取數據的時候,將數據讀取到緩存區中,寫入數據的時候也是將數據寫入到緩衝區中;
任什麼時候候訪問NIO的數據,都是放到緩衝區的;
實際上,緩衝區是一個容器對象,是一個數組,全部的緩存類型都繼承了Buffer,對與咱們經常使用的基本數據類型,都有對應的Buffer類型;
Buffer的底層是一個數組,可是咱們在使用的使用的時候會有三個屬性來記錄和跟蹤緩衝區的變化狀況,咱們使用get()和put()方法來對數組進行獲取和添加數據的時候都會對緩衝區引發狀態的變化
(1)position:指定寫入和讀取元素的索引,get()/put()方法更新值,初始化時爲0
(2)limit:緩存區寫入通道有多少的數據,或者還有多少的空間能夠放入數據
(3)capacity:緩衝區的最大容量,數組的容量大小;緩存
Selector
(1)向Selector對象註冊喜歡的事件
(2)在Selector中獲取喜歡的事件
(3)根據不一樣的事件處理相對應的方法spa
事件
(isAcceptable,isReadable,isWritable)
Channelcode
通道是一個對象,經過他來讀取和寫入數據,全部的數據經過Buffer來進行處理。
咱們不會直接從通道中讀取數據,而是將數據寫入到緩存區中,再從緩衝區中獲取數據的
NIO中的通道對象不少,都實現了Channel接口對象