DelayQueue的核心属性和写入、读取流程分析

51 阅读1分钟

DelayQueue的核心属性

在这里插入图片描述

DelayQueue的写入流程分析

  • add方法也是包装使用offer方法。
  • Delay是无解的,数组又可以动态扩容,不需要关注生产者的阻塞问题 在这里插入图片描述
  • offer方法分析 在这里插入图片描述

DelayQueue读取流程

消费者消费元素存在两种阻塞的情况: 1.消费者得到栈顶的数据,但是延迟时间没有到,消费者需要阻塞等待。 2.消费者尝试获取消费元素,发现已经存在消费者在等待栈顶数据元素,那么这个后来者也需要等待。

读取流程的四个方法实现

  • remove方法、查看父类中提供的方法,存在元素就返回。不然就抛出异常 在这里插入图片描述
  • poll方法 在这里插入图片描述
  • poll待时间参数的方法 在这里插入图片描述
  • take方法分析、和上一个方法几乎类似,不在赘述。 在这里插入图片描述