zoukankan      html  css  js  c++  java
  • DelayQueue

     1、结构

         使用的是PriorityQueue来作为底层的存储

         元素需要实现Delayed接口,该接口继承了comparable接口

         DelayQueue的队头元素是根据comparable排在队首的元素

        无论是入队还是出队都是先加锁,也就是异步进行的。

    2、add,put,offer操作底层都是调的offer。

        offer操作因为加锁是异步进行的,而且发现加入后的元素是自己的时候进行signal(),而不是signalAll()

    为什么调用signal?出队的操作没有await

        

     3、remove,poll,peek,take都会加锁

    remove  操作不管时间是否已经到了,都会删除.

    poll操作只有delay到了才会删除。

    peek也加锁,但是不会判断是否已经到delay时间,只是调priorityQueue.peek()。

    take操作会阻塞。

  • 相关阅读:
    日志模块
    模块介绍3
    模块介绍2
    模块介绍
    迭代器
    Python装饰器续/三元表达式/匿名函数
    Python装饰器详解
    LATEX LIAN XI
    BELLMAN 最短路算法
    B阿狸和桃子的游戏
  • 原文地址:https://www.cnblogs.com/YDDMAX/p/5644055.html
Copyright © 2011-2022 走看看