Min*_*ock 5 java linux io concurrency file
是否可以同时从两个或多个不同的进程读取同一个文件?
我想在 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
}
Run Code Online (Sandbox Code Playgroud)
没有应用程序会写入文件,但多个线程/应用程序需要同时执行上面的代码。上面的代码是否正常,或者在这种情况下我需要使用任何特殊机制吗?
此外,该解决方案应该是独立于平台的,并且必须在类似 Linux 的系统上工作。
多个Java进程可以同时读取同一个文件吗?
他们当然可以;最终,无论如何确保每个进程/线程以自己的速度读取是操作系统的作用,因此您无需担心。
当然,您可能希望在不同线程之间共享尽可能多的资源,但肯定不是 I/O 流;如果您使用 Java 7 或更高版本,请使用新的文件 API(这是 2014 年;Java 7 出现已经 3 年了);File
与 java.nio.file 相比,它是一个非常低劣的 API(事实上,与大多数编程语言的文件操作 API 相比)。
归档时间: |
|
查看次数: |
4332 次 |
最近记录: |