在Java中,有一个集合,我可以在一段时间之后才能获取一个元素?

时间:2011-06-27 19:54:21

标签: java collections thread-safety web-crawler timedelay

我正在做一个webcrawler,我想不要用请求重载服务器,所以我会限制对服务器的访问。

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

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

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

有一些类似的吗?如果没有,建议在实施中使用哪些集合?这个集合将由各种线程访问。

1 个答案:

答案 0 :(得分:7)

您可以使用DelayQueue。它是一个并发集合,只允许在“过期”后从中获取项目。您添加的项目必须实现Delayed

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