多个Java进程可以同时读取同一个文件吗?

时间:2014-11-08 17:54:38

标签: java linux file concurrency io

是否可以同时从两个或多个不同的进程读取同一个文件?

我想在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的系统。

1 个答案:

答案 0 :(得分:4)

  

多个Java进程可以同时读取同一个文件吗?

当然可以;最后,无论如何,操作系统的作用是确保每个进程/线程按照自己的进度读取,因此您不必担心它。

当然,您可能希望在不同的线程之间共享尽可能多的资源,但肯定不是I / O流;当我们使用时,如果您使用Java 7或更高版本,则使用新文件API(这是2014年;自Java 7开始以来已经有3年了);与java.nio.file相比,File是一个非常低劣的API(事实上,与一般的大多数编程语言的文件操作API相比)。