2

我正在做一个网络爬虫,我不想让服务器的请求超载,所以我会按时间限制对服务器的访问。

我将有一个对象/集合,它是我将访问的链接列表。

我得到第一个链接,它来自谷歌(示例),访问并完成所有工作。我只能在 20 秒后获取另一个来自 Google 的链接(示例),而在等待时,我会从其他域获取链接。

总而言之,我需要一个集合,允许我对其中的对象进行分类,并以确定的间隔从中获取对象。

有没有类似的?如果不是,建议在实现中使用哪些集合?这个集合将被各种线程访问。

4

1 回答 1

7

您可以为此使用延迟队列。这是一个并发集合,仅允许在“过期”后从中取出项目。您添加的项目必须实现Delayed

您可能还只想使用ScheduledExecutorService。例如,对于您正在抓取的每个域,您可以安排一个抓取下一个链接的任务,然后使用下一个链接重新安排另一个任务。

于 2011-06-27T19:59:51.057 回答