在Java中处理HTTP调用的大文件

时间:2012-11-01 19:18:11

标签: java multithreading file http

我有一个包含数百万行的文件,我需要处理它。该文件的每一行都将导致HTTP调用。我正试图找出解决问题的最佳方法。

我显然可以只读取文件并按顺序拨打电话,但速度会非常慢。我想并行化调用,但我不确定是否应该将整个文件读入内存(我不是很喜欢的东西)或尝试并行化文件的读取(我是我不确定是否有意义。)

在这里寻找一些关于解决问题的最佳方法的想法。如果现有的框架或库做了类似的事情,我也很乐意使用它。

感谢。

2 个答案:

答案 0 :(得分:5)

  

我想并行化调用,但我不确定是否应将整个文件读入内存

您应该使用有限ExecutorService的{​​{1}}。当您读入百万行时,您将作业提交到线程池,直到BlockingQueue已满。这样,您就可以同时运行100个(或任何数量最佳的)HTTP请求,而无需事先读取文件的所有行。

如果队列已满,您需要设置一个BlockingQueue来阻止。这比调用者运行处理程序更好。

RejectedExecutionHandler

答案 1 :(得分:0)

格雷的做法似乎很好。我建议的另一种方法是将文件拆分为块(您必须编写逻辑),并处理具有多个线程的文件。