排队多个下载,寻找生产者消费者API



我有一个应用程序(一个servlet,但这不是很重要),它下载一组文件并解析它们以提取信息。到目前为止,我在一个循环中完成了这些操作:-在Internet上获取新文件-

多线程下载管理器似乎是解决这个问题的更好方案,我希望以最快的方式实现它。

有些下载依赖于其他下载(因此,这套是部分订购的)。

Mutly-readed编程很难,如果我能找到一个API来做这件事,我会很高兴。我需要将一组文件(有序)放入队列中,并获得第一组完全下载的文件。

你知道我可以用什么图书馆来实现这一点吗?

谨致问候,Stéphane

您可以执行以下操作:

BlockingQueue<Download> queue = new BlockingQueue<Download>();
ExecutorService pool = Executors.newFixedThreadPool(5);
Download obj = new Download(queue); 
pool.execute(obj); //start download and place on queue once completed
Data data = queue.take(); //get completely downloaded item

如果每次下载的速度不相同,则可能需要使用不同类型的队列。我相信BlockingQueue是先进先出的。

您可能想研究使用PriorityBlockingQueue,该队列将根据其Comparable方法对下载对象进行排序。有关更多详细信息,请参阅此处的API

希望这能有所帮助。

最新更新