[英]most efficient way to get byte[] to Queue (ListBlockingQueue)
我正在讀取傳遞給我的字節數組(不是我的選擇,但是我必須以這種方式使用它)。 我需要將數據獲取到LinkedBlockingQueue,並最終逐步遍歷字節以構建一個或多個(可能包含部分消息)xml消息。 所以我的問題是這樣的:
我應該為LBQ類型使用哪種通用名稱? 將byte []轉換為該泛型類型的最有效方法是什么?
這是我的示例代碼:
parsebytes(byte[] bytes, int length)
{
//assume that i am doing other checks on data
if (length > 0)
{
myThread.putBytes(bytes, length);
}
}
在我的線程中:
putBytes(byte[] bytes, int length)
{
for (int i = 0; i < length; i++)
{
blockingQueue.put(bytes[i]);
}
}
我也不想不得不逐個字節地發送阻塞隊列。 我寧願抓取隊列中的所有內容並進行處理。
考慮一下:
BlockingQueue<byte[]> q = new LinkedBlockingQueue<>();
q.put(new byte[] {1,2,3});
byte[] bytes = q.take();
沒有ListBlockingQueue
這樣的東西。 但是,由於Java數組是對象,因此任何BlockingQueue<Object>
都將接受byte[]
。
在沒有其他設計考慮的情況下,最簡單的選擇可能是將陣列到達時僅將其粘貼到隊列中,然后讓消費者將它們裝在一起。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.