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对象将数据写入同一文件。是否需要同步?抱歉我的英语不好。
答案 0 :(得分:4)
多个RandomAccessFile对象可以将数据写入同一个文件吗?
是的,我们在Chronicle的图书馆中这样做。
在我的代码中,每个线程通过各自的RandomAccessFile对象将数据写入同一个文件。是否需要同步?
您仍然需要担心线程安全问题。 synchronized
或Lock
会起作用,但这不会在JVM中发挥作用。如果您有多个JVM,则需要使用低级别脱机堆线程安全操作的共享锁。 (这是我们所做的,因为它是最快的选择)