1.Scattering Reads
scatter(分散)是指數(shù)據(jù)從一個(gè)channel讀取到多個(gè)buffer中习劫。
ByteBuffer header = ByteBuffer.allocate(128);
ByteBuffer body?? = ByteBuffer.allocate(1024);
ByteBuffer[] bufferArray = { header, body }
channel.read(bufferArray);
read()方法按照buffer在數(shù)組中的順序?qū)腸hannel中讀取的數(shù)據(jù)寫入到buffer收壕,當(dāng)一個(gè)buffer被寫滿后,channel緊接著向另一個(gè)buffer中寫劳闹。
2.?Gathering Writes
gather(聚集)是指多個(gè)buffer的數(shù)據(jù)寫入到同一個(gè)channel。
ByteBuffer header = ByteBuffer.allocate(128);
ByteBuffer body?? = ByteBuffer.allocate(1024);
ByteBuffer[] bufferArray = { header, body };
channel.write(bufferArray);
write()方法會(huì)按照buffer在數(shù)組中的順序擂错,將數(shù)據(jù)寫入到channel鹿鳖,注意只有position和limit之間的數(shù)據(jù)才會(huì)被寫入。因此疫衩,如果一個(gè)buffer的容量為128byte硅蹦,但是僅僅包含58byte的數(shù)據(jù),那么這58byte的數(shù)據(jù)將被寫入到channel中闷煤。因此與Scattering Reads相反童芹,Gathering Writes能較好的處理動(dòng)態(tài)消息。