JAVA多线程-DelayQueue

DelayQueue 类实现了BlockingQueue, 可以参考前面文章有关BlockingQueue接口的详解。

DelayQueue在内部阻塞元素,直到某个延迟过期。DelayQueue中的元素必须实现java.util.concurrent.Delayed接口,下面是Delayed接口:

public interface Delayed extends Comparable<Delayed> {



 public long getDelay(TimeUnit timeUnit);



}

 

通过getDelay()方法返回的值,在释放此元素之前的仍然处于延迟。

如果返回0或负值,则延迟将被视为已过期,并且元素在 DelayQueue调用下一个take()时释放。

getDelay()方法通过TimeUnit 实例的枚举值告诉定时器什么时候应该返回值。

 TimeUnit枚举可以取这些值:

DAYS

HOURS

MINUTES

SECONDS

MILLISECONDS

MICROSECONDS

NANOSECONDS

 

 Delayed接口也继承了 java.lang.Comparable 接口,正如你所见,意思就是每个Delayed 对象可以互相比较. 这可能是在DelayQueue中内部使用的,用于对队列中的元素排序,因此它们是按失效时间释放的.

下面是 DelayQueue的用法:

public class DelayQueueExample {



    public static void main(String[] args) {

        DelayQueue queue = new DelayQueue();



        Delayed element1 = new DelayedElement();



        queue.put(element1);



        Delayed element2 = queue.take();

    }

}

 

DelayedElement是一个我创建的类的实现了Delayed 的接口 ,它并不是 java.util.concurrent包中的一部分.如果用到DelayQueue类的的话,你需要创建实现Delayed的元素.

参考翻译:http://tutorials.jenkov.com/java-util-concurrent/delayqueue.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值