文件的线程安全

con*_*ner 2 java multithreading file

我有很多应用程序以Java并发方式写入我的文件,我想使该操作并发,也希望我的文件保持顺序我有从网站1写入线程1

从网站2编写线程2

从网站3编写线程3

我想保留秩序。

我该怎么做谢谢

Ale*_*exR 5

您可以使用常规同步机制。创建文件存储库,其中包含对java.io.File对象的引用。它将公开类似getFile(String path)的API。每次您要访问文件时,请执行以下操作:

File file = FileRepository.getFile("foo.txt");
synchronized(file) {
  // perform any manipulations. 
}
Run Code Online (Sandbox Code Playgroud)

同步访问文件的其他方法是:

FileChannel.lock()
Run Code Online (Sandbox Code Playgroud)


Jef*_*ter 5

使用队列表示对文件的操作,并确保您以适当的顺序(先进先出)从队列中取出。您可以将此视为生产者消费者问题。您有多个线程捕获数据,并且有一个使用者将数据写入磁盘。