繁体   English   中英

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

[英]Can multiple Java processes read the same file at the same time?

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM