2011-11-23 48 views
1

我可以使用多個線程在中寫入Java中的RandomAccessFile使用多個線程寫入單個文件

我知道RandomAccessFiles允許讀取&寫在任何位置。

我想創建上面的文件的n個部分,並讓每個線程在特定部分寫入 內容。

它會提高IO性能嗎?

渴望聽到很快......

回答

3

您可以指定適當的共享打開文件的兩倍,其指向同一個文件中的兩個RandomAccessFile的對象。如果你小心不要兩次寫入和讀取相同的位置(操作系統也會處理它,但你會得到意想不到的結果),操作系統將正常管理。

但是,它不會提高您的I/O性能 - 當涉及到I/O時,CPU幾乎不會成爲瓶頸。你試圖達到什麼目標?

+0

我想從URL下載一個文件,爲此我想要2個線程同時運行以讀取緩衝區並同時寫入到RandomAccessFile。希望它可以提高我的下載程序的下載速度 – rohit

+0

或者,您可以將每個線程流傳輸到一個臨時文件(更安全),然後在所有線程完成時重建原始文件。可能並不簡單,可能在性能上沒有區別,但併發性較差。 –

+0

好的評論AlistairIsrael,但你真的確定它不會幫助提高IO性能。 – rohit