对于我正在从事的项目,我试图尽快计算文本文件中的元音。为了做到这一点,我正在尝试一种并发方法。我想知道是否可以同时读取文本文件以加快计数速度?我认为瓶颈是I/O,因为现在我正在通过缓冲的读取器读取文件并逐行处理,所以我想知道是否可以一次读取文件的多个部分。
我最初的想法是使用
Split File - Java/Linux
但是显然MappedByteBuffers并不是很好的性能选择,分割后,我仍然需要逐行从每个MappedByteBuffer中读取。
另一种选择是在读取一定数量的行后进行拆分,但这无法达到目的。
将不胜感激。
最佳答案
以下内容不会拆分文件-但可以帮助同时处理它!
在Java 8中使用Streams,您可以执行以下操作:
Stream<String> lines = Files.lines(Paths.get(filename));
lines.filter(StringUtils::isNotEmpty) // ignore empty lines
如果要并行运行,可以执行以下操作:
lines.parallel().filter(StringUtils::isNotEmpty)
在上面的示例中,我过滤了空行-但是您当然可以通过实现自己的方法并调用它来将其修改以供您使用(计算元音)。
关于java - 在Java中拆分文件以进行多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30583552/