【发布时间】:2019-10-08 10:09:29
【问题描述】:
我正在尝试使用 JSON 行读取一个大型(以 GB 为单位)文件,进行一些“处理”并将结果写入另一个文件。
我将为此目的使用GSON streaming API。
为了加快处理速度,我想对“处理”部分进行多线程处理。
我正在逐行读取文件,因为我无法将整个文件加载到内存中。我的“处理”取决于满足某些条件的两条不同的行(可能相隔数千行)。是否可以对这种“处理”进行多线程处理,而无需将整个内容加载到内存中?
【问题讨论】:
-
如果你只是从单个文件读取并写入单个文件,多线程不会加速 IO,这可能是瓶颈(除非你的处理很激烈 --- 什么是是吗?)
-
@Thilo,我已经进行了编辑以进一步解释它。请检查。
-
看看:how to parse a huge JSON file without loading it in memory,Parse only one field in a large JSON string。如果您已经使用
Spring,您可以尝试使用Batch processing,它是为像您这样的问题而创建的。它介绍了:应该适合您的问题的读者、作者、处理器。
标签: java multithreading gson