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

Ren*_*ani 2 java collections timedelay web-crawler thread-safety

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

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

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

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

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

Mik*_*els 7

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

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