字節的緩衝區我想要的ByteBuffers添加到Java中的隊列,所以我有以下代碼,for循環隊列中的Java
public class foo{
private Queue <ByteBuffer> messageQueue = new LinkedList<ByteBuffer>();
protected boolean queueInit(ByteBuffer bbuf)
{
if(bbuf.capacity() > 10000)
{
int limit = bbuf.limit();
bbuf.position(0);
for(int i = 0;i<limit;i=i+10000)
{
int kb = 1024;
for(int j = 0;j<kb;j++)
{
ByteBuffer temp = ByteBuffer.allocate(kb);
temp.array()[j] = bbuf.get(j);
System.out.println(temp.get(j));
addQueue(temp);
}
}
}
System.out.println(messageQueue.peek().get(1));
return true;
}
private void addQueue(ByteBuffer bbuf)
{
messageQueue.add(bbuf);
}
}
內部工作似乎正常工作爲temp
值設置到正確的值,然後通過調用addQueue
方法將其添加到隊列中。然而,只有bytebuffer
的第一個字母纔會被添加到queue
,而沒有其他的。因爲當我在head
的隊列中的第一個值時,我得到的號碼是116
,但是當我嘗試獲得其他值時,它們是0
,這是不正確的。爲什麼會發生這種情況,除了bytbuffer的第一個值之外沒有其他值被添加到隊列頭部?
你的內循環產生的ByteBuffers 1024,其中每個只有一個字節從'bbuf'複製。那是你要的嗎?或者你打算創建一個包含原始'bbuf'的1024字節「切片」的系列緩衝區? – VGR 2014-11-26 16:39:30
@VGR我想要一系列1024字節的原始片 – jgr208 2014-11-29 00:39:06