fm9984 2020-12-01 10:57 采纳率: 0%
浏览 324

LinkedBlockingQueue对象的 take()方法有时候没有获取到值

while(true) 循环获取值,有时候获取不到值。

executorService.execute(() -> {
            while (true) {
                AddOrderQueue addOrderQueue = null;
                try {
                    addOrderQueue = queue.take();
                } catch (InterruptedException e) {
                    log.error(ExceptionUtils.getStackTrace(e));
                }
                try {
                    platformOrderServer.platformAddOrder(addOrderQueue.getSellOrderReq(), addOrderQueue.getOrderBPo(),
                            addOrderQueue.getGameNameBPo(), addOrderQueue.getServerPO(), addOrderQueue.getAreaPO());
                } catch (IOException e) {
                    log.error(ExceptionUtils.getStackTrace(e));
                }
            }
        });

  • 写回答

1条回答 默认 最新

  • 老衲の少女心 2020-12-01 11:18
    关注

    take方法:检索并删除此队列的头,如有必要,等待元素可用。

     

    LinkedBlockingQueue 相关方法:所以take没有拿到值,会阻塞

     

     

    评论

报告相同问题?

悬赏问题

  • ¥15 帮我写一个c++工程
  • ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
  • ¥15 关于smbclient 库的使用
  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教