我有一個二進制文件,其中包含信息塊(我將其稱爲數據包)。每個數據包由一個固定長度的頭部和一個可變長度的主體組成。我必須從包頭本身確定身體的長度。我的任務是從文件中讀取這些數據包並對它們執行一些操作。目前我正在執行此任務,如下所示:Java - 並行讀取二進制文件
- 將文件作爲隨機訪問文件打開並轉到特定的起始位置(用戶指定的起始位置)。從這個位置讀取第一個數據包。在一個循環
- 讀取下一個數據包
- 執行我的操作 執行具體操作
- 那麼這個推移,直到我打文件標誌的結束。
正如您可以猜到,當文件大小是巨大的,連續讀取每個數據包並處理它是一個耗時的事情。我想以某種方式將這個操作(即數據包生成操作)並行化並將其放入某個阻塞隊列中,然後從隊列中並行檢索每個數據包並執行我的操作。
有人可以建議我怎麼可以並行生成這些數據包?
每個數據包頭文件中的位置(第一個之後)是否取決於前面的數據包的大小? –
@Ted:不是。我根據讀取字節的特定簽名來檢測下一個數據包頭的開始。它會在前一個數據包結束後的某處出現,但不會出現在任何特定位置。 – Sujay