我有一个应用程序( servlet,但这不是很重要),它下载一组文件并对其进行解析以提取信息。到目前为止,我在一个循环中完成了这些操作:-在Internet上获取新文件-分析它。
对于这个问题,多线程下载管理器似乎是一个更好的解决方案,我希望以最快的方式实现它。
有些下载是依赖于其他下载的(因此,此集合是部分排序的)。
多线程编程很难,如果我能找到一个API来做这件事,我会很高兴的。我需要将一组文件(已排序)放入队列中,并获得第一组完全下载的文件。
你知道有什么库可以用来实现这一点吗?
问候你,斯特凡
发布于 2011-06-26 05:53:57
你可以这样做:
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,它将根据下载对象的可比较方法对其进行排序。有关更多详细信息,请参阅。
希望这能有所帮助。
https://stackoverflow.com/questions/6480726
复制相似问题