public class WriteThread extends Thread{
@Override
public void run() {
RandomAccessFile randomAccessFile = new RandomAccessFile(fileName, "rwd");
randomAccessFile.seek(threadPosition);
byte[] buffer = new byte[1024 * 8];
randomAccessFile.write(buffer, 0, threadLength);
}
}
私のコードでは、各スレッドはそれぞれのRandomAccessFileオブジェクトを介して同じファイルにデータを書き込みます。同期する必要がありますか?英語が下手でごめんなさい。
複数のRandomAccessFileオブジェクトが同じファイルにデータを書き込むことはできますか?
はい、Chronicleのライブラリでこれを行います。
私のコードでは、各スレッドはそれぞれのRandomAccessFileオブジェクトを介して同じファイルにデータを書き込みます。同期する必要がありますか?
あなたはまだスレッドセーフについて心配する必要があります。synchronized
またはLock
機能しますが、これはJVM間では機能しません。複数のJVMがある場合は、低レベルのオフヒープスレッドセーフ操作を使用する共有ロックが必要です。(これが最速のオプションであるため、私たちが行うことです)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加