您好,欢迎来到12图资源库!分享精神,快乐你我!我们只是素材的搬运工!!
  • 首 页
  • 当前位置:首页 > 开发 > WEB开发 >
    面试侃集合 | DelayQueue篇(4)
    时间:2021-08-07 21:26 来源:网络整理 作者:网络 浏览:收藏 挑错 推荐 打印

    Hydra:假定有多个线程在执行take办法,当第一个线程进入时,堆顶元素还没有到期,那么会将leader指向本人,然后阻塞本人一段时间。假设在这时期有其他线程抵达,会由于leader不为空阻塞本人。

    当第一个线程阻塞完毕后,假设将堆顶元素弹出成功,那么first指向的元素应该被gc回收掉。但是假设还被其他线程持有的话,它就不会被回收掉,所以将first置为空可以协助完成渣滓回收。

    面试官:我突然有一个发散性的疑问,定时义务线程池ScheduledThreadPoolExecutor,底层运用的也是DelayQueue吗?

    Hydra:成绩很不错,但很遗憾并不是,ScheduledThreadPoolExecutor在类中本人定义了一个DelayedWorkQueue外部类,并没有直接运用DelayQueue。不过假设你看一下源码,就会看到它们完成的逻辑基本分歧,异样是基于二叉堆的上浮、下沉、扩容,也异样基于leader、锁、条件等候等操作,只不过本人用数组又完成了一遍而已。说白了,看看两个类的作者,都是Doug Lea大神,所以差异基本没有多大。

    面试官:好了,明天先到这吧,能最后再总结一下吗?

    Hydra:DelayQueue全体了解起来也没有什么困难的点,难的中央在前面聊优先级队列的时分基本曾经扫清了,新加的东西也就是一个关于leader线程的操作,运用了leader线程来增加不必要的线程等候时间。

    面试官:明天的面试有点短啊,总是有点意犹未尽的觉得,看来下次得给你加点料了。

    Hydra:…

    【编辑引荐】

    微软开源的可视化神器,上手太酷炫了

    Cube.js:试试这个新的数据剖析开源工具

    为什么在 2021 年我依然引荐你运用 Linux

    微软 Windows 11 晋级运转并非必须满足 TPM 2.0 ,但需求 TPM 1.2 以上

    Windows 11硬件要求难倒玩家 TPM 2.0模块价钱暴涨3倍

    (责任编辑:admin)