我有一个包含数百万行的文件,我需要处理它。该文件的每一行都将导致HTTP调用。我正试图找出解决问题的最佳方法。
我显然可以只读取文件并按顺序拨打电话,但速度会非常慢。我想并行化调用,但我不确定是否应该将整个文件读入内存(我不是很喜欢的东西)或尝试并行化文件的读取(我是我不确定是否有意义。)
在这里寻找一些关于解决问题的最佳方法的想法。如果现有的框架或库做了类似的事情,我也很乐意使用它。
感谢。
答案 0 :(得分:5)
我想并行化调用,但我不确定是否应将整个文件读入内存
您应该使用有限ExecutorService
的{{1}}。当您读入百万行时,您将作业提交到线程池,直到BlockingQueue
已满。这样,您就可以同时运行100个(或任何数量最佳的)HTTP请求,而无需事先读取文件的所有行。
如果队列已满,您需要设置一个BlockingQueue
来阻止。这比调用者运行处理程序更好。
RejectedExecutionHandler
答案 1 :(得分:0)