是否可以同时从两个或多个不同的进程读取同一个文件?
我想在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的系统。
答案 0 :(得分:4)
多个Java进程可以同时读取同一个文件吗?
当然可以;最后,无论如何,操作系统的作用是确保每个进程/线程按照自己的进度读取,因此您不必担心它。
当然,您可能希望在不同的线程之间共享尽可能多的资源,但肯定不是I / O流;当我们使用时,如果您使用Java 7或更高版本,则使用新文件API(这是2014年;自Java 7开始以来已经有3年了);与java.nio.file相比,File
是一个非常低劣的API(事实上,与一般的大多数编程语言的文件操作API相比)。