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

DelayQueue的核心属性

DelayQueue的核心属性和写入、读取流程分析_第1张图片

DelayQueue的写入流程分析

  • add方法也是包装使用offer方法。
  • Delay是无解的,数组又可以动态扩容,不需要关注生产者的阻塞问题
    DelayQueue的核心属性和写入、读取流程分析_第2张图片
  • offer方法分析
    DelayQueue的核心属性和写入、读取流程分析_第3张图片

DelayQueue读取流程

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

读取流程的四个方法实现

  • remove方法、查看父类中提供的方法,存在元素就返回。不然就抛出异常
    DelayQueue的核心属性和写入、读取流程分析_第4张图片
  • poll方法
    DelayQueue的核心属性和写入、读取流程分析_第5张图片
  • poll待时间参数的方法
    DelayQueue的核心属性和写入、读取流程分析_第6张图片
  • take方法分析、和上一个方法几乎类似,不在赘述。
    DelayQueue的核心属性和写入、读取流程分析_第7张图片

你可能感兴趣的:(Java并发编程,java,大数据,开发语言)