我有一个大约10 GB的巨大文件.我必须对Java中的文件执行排序,过滤等操作.每个操作可以并行完成.
启动10个线程并且并行读取文件是否合适?每个线程读取1 GB的文件.有没有其他选项来解决超大文件的问题并尽快处理它们?NIO是否适合这种情况?
目前,我正在进行串行操作,处理此类文件大约需要20分钟.
谢谢,
Jon*_*eet 11
启动10个线程并且并行读取文件是否合适?
几乎肯定不是 - 虽然它取决于.如果它来自SSD(那里实际上没有寻找时间)那么可能.如果它是传统的磁盘,绝对不是.
这并不意味着您不能使用多个线程 - 您可能会创建一个线程来读取文件,只执行最基本的任务以将数据转换为可处理的块.然后使用生产者/消费者队列让多个线程处理数据.
在不知道"排序,过滤等"的情况下(这是非常模糊的)我们无法真正说明该过程的可并行化程度 - 但尝试在单个文件上并行执行IO 可能无济于事.