2016-11-05 4 views
0

私は並列化をテストするためにjavaで単純なベンチマークを書いています。プログラムは合計1000個のランダムなバイトを生成し、バイナリファイルに書き込みます。これは、異なる量のスレッドを使用して、バイトの生成とディスクへの書き込みを並列化し、スレッドごとにプロセス全体の実行時間を測定します。Javaで複数のスレッドが同時にファイルにランダムなバイトを書き込む[ちょっとしたアドバイス]

プログラムは、スレッドの指定された数のうち、実行の全体分割 - ファイルをバイト配列の生成これらのバイトの書き込みの両方を。

私の問題は、最後に1つのバイナリファイルが必要です。各スレッドがごみ箱を同じファイルに書き込むようにするには、アドバイスが必要です。

1)各スレッドがそれぞれディスク上の同じ空のファイルを参照するRandomAccessFileのインスタンスを作成するようにする必要があります。各スレッドは、重複しない方法で別の場所からファイルを書き出しますか?これは本当にディスク書き込みを並列化する最良の方法のようです。

2)各スレッドにバッファリングされたストリームオブジェクトへの参照を渡し、各スレッドがバイト配列をこのストリームに送ることはできますか?バイトをリッスンし、ファイルを受け取る順番どおりにファイルに書き込むオブジェクトを作成する方法はありますか?私は、単一のオブジェクトをすべてのバイトを収集することは、本当に並列化されたディスク書き込みを表していないと心配しています。

3)各スレッドはそれぞれのバイトを独自のファイルに書き込み、そのファイルをメインファイルに「マージ」する必要がありますか?

ありがとうございました!私は、詳細なコード例は必要ありませんが、私は正しい方向に私を指すためにこれを行うようにいくつかのアドバイスをしたいです。

答えて

関連する問題