多个文件读取器可同时并行读取同一文件

时间:2018-08-08 06:36:34

标签: java multithreading file-io

我有一个非常大的文本数据文件。是否可以由多个文件读取器同时从不同位置并行读取此文件?例如,一个读取器从头开始读取并到达中间,而另一个读取器从文件的中间开始读取至末尾。

我有另一种方法,可以通过流读取文件并使用parallel。但这并没有达到目标。

  Files.lines(filePath).parallel

多个文件阅读器可能无法读取同一文件,因为该文件已被当前正在读取该文件的另一个线程获取并锁定。无论如何,该文件是否可以在许多线程之间共享,并且他们可以同时读取它。

1 个答案:

答案 0 :(得分:1)

  

是否可以由多个文件读取器同时从不同位置同时读取此文件?

是的。您可以使用RandomAccessFile一次从多个点读取文件。您只能在文件未锁定的情况下执行此操作。

如果您有一个文本文件,则需要找到该行的开头,并且内置工具并不真正支持此类,因此您必须自己做一些工作。

  

有什么方法可以使该文件在多个线程之间共享,并且他们可以同时读取它。

我们有几个工具支持跨进程并发读取和写入同一文件,因此这是可能的。 (它们适用于二进制文件,而不适用于文本)