记一次多线程错误的坑

Bug 专栏收录该内容
2 篇文章 0 订阅

        总所周知,java.util.concurrent包为我们提供了一系列并发处理工具,其中BlockingQueue是我们实现生产者消费者模式较为便利的工具,其主要方法有:

       add         增加一个元索                      如果队列已满,则抛出一个IIIegaISlabEepeplian异常
       remove   移除并返回队列头部的元素     如果队列为空,则抛出一个NoSuchElementException异常
       element  返回队列头部的元素              如果队列为空,则抛出一个NoSuchElementException异常
       offer       添加一个元素并返回true        如果队列已满,则返回false
       poll         移除并返问队列头部的元素     如果队列为空,则返回null 如果有指定时间参数,则会等待该时间段在尝试获取一次   
       peek       返回队列头部的元素              如果队列为空,则返回null
       put         添加一个元素                       如果队列满,则阻塞
       take        移除并返回队列头部的元素   
      参考原文链接:https://blog.csdn.net/u012050154/article/details/60572567

       而我在最近一次编程中,看到其他博客的方法介绍,其把remove与poll弄混了,导致我企图通过异常检测退出任务循环时,导致无法结束任务(它会一直返回null?但idea调试时又显示该任务已结束(线程池线程均已空闲状态),这也是我百思不得其解的地方),进而导致我无法获取结果。。。这个故事告诉我,要使用一个新的API时不仅看看前辈们的使用经验,最好自己也看下源代码或API文档(无奈英语太差吧)。

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:技术黑板 设计师:CSDN官方博客 返回首页

打赏作者

若不努力,便浪费了

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值