是否可以同时从两个或多个不同的进程读取同一个文件?
我想在Java应用程序中做这样的事情:
final File f = new File("read-only-file");
final FileInputStream in = new FileInputStream(f);
int b;
while((b = in.read()) != null) {
//process b
Thread.sleep(10); //several read processes would really happen at the same time
}
没有应用程序会写入文件,但是多个线程/应用程序需要同时执行上面的代码.代码是否正常或在这种情况下是否需要使用任何特殊机制?
该解决方案也应该是独立于平台的,并且必须在类似Linux的系统上运行.
解决方法:
Can multiple Java processes read the same file at the same time?
当然可以;最后,无论如何,操作系统的作用是确保每个进程/线程按照自己的进度读取,因此您不必担心它.
当然,您可能希望在不同的线程之间共享尽可能多的资源,但肯定不是I / O流;当我们使用时,如果您使用Java 7或更高版本,则使用新文件API(这是2014年;自Java 7开始以来已经有3年了);与java.nio.file相比,File是一个非常低劣的API(事实上,与一般的大多数编程语言的文件操作API相比).
标签:java,file,io,linux,concurrency
来源: https://codeday.me/bug/20190624/1276700.html