簡體   English   中英

將byte []放入隊列的最有效方法(ListBlockingQueue)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM