1

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

多线程下载管理器似乎是解决此问题的更好方法,我想以最快的方式实现它。

一些下载依赖于其他下载(因此,这组是部分排序的)。

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

你知道我可以用来实现这一目标的任何图书馆吗?

问候, 斯蒂芬

4

1 回答 1

2

您可以执行以下操作:

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 。

希望这可以帮助。

于 2011-06-25T21:53:56.863 回答