DelayQueue的核心属性
DelayQueue的写入流程分析
- add方法也是包装使用offer方法。
- Delay是无解的,数组又可以动态扩容,不需要关注生产者的阻塞问题
- offer方法分析
DelayQueue读取流程
消费者消费元素存在两种阻塞的情况:
1.消费者得到栈顶的数据,但是延迟时间没有到,消费者需要阻塞等待。
2.消费者尝试获取消费元素,发现已经存在消费者在等待栈顶数据元素,那么这个后来者也需要等待。
读取流程的四个方法实现
- remove方法、查看父类中提供的方法,存在元素就返回。不然就抛出异常
- poll方法
- poll待时间参数的方法
- take方法分析、和上一个方法几乎类似,不在赘述。