今天给大家介绍一下DelayQueue,DelayQueue是BlockingQueue的一种,所以它是线程安全的,DelayQueue的特点就是插入Queue中的数据可以按照自定义的delay时间进行排序。先看一下DelayQueue的定义:从定义可以看到,DelayQueue中存入的对象都必须是Delayed的子类。因为DelayQueue的底层存储是一个PriorityQueue,在之前的文章中我们讲过了,PriorityQueue是一个可排序的Queue,其中的元素必须实现Comparable方法。而getDelay方法则用来判断排序后的元素是否可以从Queue中取出。DelayQueue一般用于生产者消费者模式,我们下面举一个具体的例子。线程池在5秒之后会被关闭。如果我们做下修改,将delayTime修改为50000,那么在线程池关闭之前插入的元素是不会过期的,也就是说消费者是无法获取到结果的。DelayQueue是一种有奇怪特性的BlockingQueue,可以在需要的时候使用。
暂无评论