文章 2021-12-15 来自:开发者社区

在阿里面试官面前现场手撕DelayQueue源码!(下)

4 新增数据先看看继承自 BlockingQueue 的方法put将指定的元素插入此延迟队列。 由于队列无界,因此此方法将永远不会阻塞.可以看到 put 调用的是 offerDelayQueue#offer将指定的元素插入此延迟队列执行流程1.加锁2.元素添加到优先级队列中3.检验元素是否为队首,是则设置 leader 为null, 并唤醒一个消费线程4.解锁其内部调用的是 PriorityQu....

在阿里面试官面前现场手撕DelayQueue源码!(下)
文章 2021-12-15 来自:开发者社区

在阿里面试官面前现场手撕DelayQueue源码!(上)

0 前言延迟元素的无边界阻塞队列,在该队列中,仅当元素的延迟到期时才可以使用它.队首是该 Delayed 元素,其延迟在过去最远过期.如果没有延迟已经过期,就没有head, poll将返回null.当元素的getDelay(TimeUnit.NANOSECONDS)方法返回的值小于或等于零时,就会发生过期.即使未到期的元素无法使用take或poll删除,它们也被视为普通的元素。 例如,size方....

在阿里面试官面前现场手撕DelayQueue源码!(上)

本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。

Java面试那些事儿

手把手带您学习Java,开启编程之路。

+关注
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等