记一次多线程错误的坑

        总所周知,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
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值