多个RandomAccessFile对象可以将数据写入同一个文件吗?

时间:2016-03-13 14:07:58

标签: java multithreading file-io randomaccessfile

 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对象将数据写入同一文件。是否需要同步?抱歉我的英语不好。

1 个答案:

答案 0 :(得分:4)

  

多个RandomAccessFile对象可以将数据写入同一个文件吗?

是的,我们在Chronicle的图书馆中这样做。

  

在我的代码中,每个线程通过各自的RandomAccessFile对象将数据写入同一个文件。是否需要同步?

您仍然需要担心线程安全问题。 synchronizedLock会起作用,但这不会在JVM中发挥作用。如果您有多个JVM,则需要使用低级别脱机堆线程安全操作的共享锁。 (这是我们所做的,因为它是最快的选择)