麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Java > 正文

Java NIO (三)-分散(Scatter)/聚集(Gather)

2019-11-06 06:13:09
字體:
來源:轉載
供稿:網友
分散和聚集 I/O 是使用多個(數組)而不是單個緩沖區進行數據讀/寫; 分散(Scatter)從通道中讀取數據時寫入多個緩沖區中,通道將數據“分散”到多個緩沖區中; 

聚集(Gather)寫入通道時將多個緩沖區的數據寫入同一個通道,通道將多個緩沖區數據“聚集”到一起;

scatter / gather經常用于需要將傳輸的數據分開處理的場合,例如傳輸一個由消息頭和消息體組成的消息,你可能會將消息體和消息頭分散到不同的buffer中,這樣你可以方便的處理消息頭和消息體。

Scattering Reads 

Scattering Reads是指數據從一個channel讀取到多個buffer中。如下圖描述: 

注意buffer首先被插入到數組,然后再將數組作為channel.read() 的輸入參數。read()方法按照buffer在數組中的順序將從channel中讀取的數據寫入到buffer,當一個buffer被寫滿后,channel緊接著向另一個buffer中寫。 

支持分散讀取的通道需要繼承實現ScatteringByteChannel接口:

public interface ScatteringByteChannel extends ReadableByteChannel{    public long read(ByteBuffer[] dsts, int offset, int length)        throws IOException;    public long read(ByteBuffer[] dsts) throws IOException;}

Gathering Writes 

Gathering Writes是指數據從多個buffer寫入到同一個channel。如下圖描述:

buffers數組是write()方法的入參,write()方法會按照buffer在數組中的順序,將數據寫入到channel,注意只有position和limit之間的數據才會被寫入。因此,如果一個buffer的容量為128byte,但是僅僅包含58byte的數據,那么這58byte的數據將被寫入到channel中。因此與Scattering Reads相反,Gathering Writes能較好的處理動態消息。 

支持聚集寫入的通道需要繼承實現GatheringByteChannel接口:

public interface GatheringByteChannel  extends WritableByteChannel{    public long write(ByteBuffer[] srcs, int offset, int length)        throws IOException;    public long write(ByteBuffer[] srcs) throws IOException;}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 成人视屏免费看 | 国产羞羞视频在线免费观看 | xxxxhd18hd日本hd | 91精品国产综合久久婷婷香 | 羞羞网站在线看 | 黄色网址免费在线 | 999精品国产 | 国产乱一区二区三区视频 | 精品久久久久久久久久久下田 | 日本精品免费观看 | 毛片在线免费 | 日韩在线毛片 | 欧美一区二区三区免费不卡 | 国产一区日韩一区 | 免费在线观看成年人视频 | 电影一级毛片 | 午夜精品老牛av一区二区三区 | 日韩欧美电影在线观看 | 国产精品观看在线亚洲人成网 | 成人在线观看免费观看 | 爱视频福利 | 九九热精品在线视频 | 国产一及毛片 | 国产亚洲精品久久久久久久久 | 成人男女免费视频 | 天天碰夜夜操 | 亚洲天堂ww | 久久精品一区二区三 | 亚洲欧美在线视频免费 | 欧美精品激情在线 | 鲁人人人鲁人人鲁精品 | 欧美黄色大片免费观看 | 国产品久久 | xnxx 美女19| 午夜视频大全 | 久久亚洲国产精品 | 欧美高清一级片 | 免费毛片播放 | 欧美视频在线一区二区三区 | 欧美黄色试片 | 99精品电影|