兼容性与java文件系统有什么关系?

时间:2010-02-18 22:36:40

标签: java file concurrency

使用java IO,似乎分支新进程为进程B提供了更好的能力,使进程B读取进程A写入文件的数据,而不是线程A写入线程B尝试读取的文件时可以获得的数据(在同一过程中。)

似乎规则与内存模型不具有可比性。那么什么基于文件的并发工作?参考文献将不胜感激。

2 个答案:

答案 0 :(得分:4)

这样的任何观察都必须是特定于操作系统的,并且可能特定于操作系统的不同版本(内核)。你在这里遇到的可能与操作系统实现线程和线程调度的方式有关。 Java平台几乎没有为这种事情进行调优。

IMO,如果您需要更好的性能,您可能不应该将文件用作同一JVM中两个线程之间的数据传输通道。对应用程序进行编码,以检测线程是否位于同一JVM中并使用(比如)Java Pipe流。

答案 1 :(得分:0)

也许它可能与线程和进程阻塞有关。

当进程需要资源(写入/读取文件)时,它会阻塞直到S.O.满足要求并返回流程。

如果您没有使用hyperthreading,则具有两个线程的进程将阻止两个线程以完成每个任务的完成。但如果你将它们分开,也许是S.O.可以优化访问并更好地对读/写进行并行化。

(只是猜测:)