介绍
DelayQueue 是一个无边界的 BlockQueue 对象,根据其名称,就知道它是一个延迟等待队列,它只能存储实现了 Delayed 接口的对象。在存入元素时,会进行队列的排序,将延迟时间最短的元素放置到表头,延迟时间最长的元素放置到表位;取出元素时,会判断当前队列头部元素的延迟时间是否到达,如果没有则会陷入等待,直到元素的延迟时间到达。注意:DelayQueue 不能存放 null 元素。
Delayed 接口定义
public interface Delayed extends Comparable<Delayed> {
/**
* 给定一个时间单位,返回此对象在该单位时间上的剩余延迟时间
*
* @param unit 时间单位
* @return 剩余延迟时间; 如果返回 0 或者 负值则表示延迟时间已经达到
*/
long getDelay(TimeUnit unit);
}