我正在閱讀一個字節數組傳遞給我(不是我的選擇,但我必須這樣使用它)。我需要將數據獲取到LinkedBlockingQueue,並最終逐步構建一個或多個(可能包含部分消息)xml消息的字節。所以我的問題是這樣的:最有效的方法來獲取字節[]隊列(ListBlockingQueue)
我應該使用什麼類型的LBQ類型? 什麼是最有效的方法來獲得該字節[]該泛型類型?
這裏是我的示例代碼:
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]);
}
}
我也不想有拉斷阻塞隊列逐字節兩種。我寧願抓住隊列中的所有東西並處理它。
有與使用(字節)的問題(http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Byte。 html)類型,並讓java自動轉換爲你(不確定性能效率,但代碼行可能是最簡單的)。 – zbrunson
你有'byte []'或[ByteArrayInputStream](http://docs.oracle.com/javase/6/docs/api/java/io/ByteArrayInputStream.html)或其他嗎?當你獲得更多數據時,是否會給你'byte []'繼續更新它?如果對這些問題的答案是否定的,爲什麼你需要隊列被阻塞? – durron597
函數參數是byte []。基本上我需要儘快退出該函數,因此我將數據關閉,並在另一個線程中使用LBQ上的put/take來處理它。 我目前有LBQ作爲一個字節,但它似乎是浪費,必須循環放入逐字節。 – Jason