【问题标题】:What is the best way to signal LinkedBlockingDeque client to stop consuming?向 LinkedBlockingDeque 客户端发出信号停止消费的最佳方式是什么?
【发布时间】:2016-06-28 01:16:15
【问题描述】:

向 LinkedBlockingDeque 客户端发出停止消费信号的最佳方式是什么?

服务线程将停止写入双端队列,但如果队列为空,消费线程将阻塞。我需要做的是让消费线程从队列中获取所有内容并关闭。中断是好的解决方案吗?

【问题讨论】:

    标签: java multithreading deque


    【解决方案1】:

    Thread.interrupt() 通常不是一个好主意,因为它可能会导致线程当前正在处理的工作中断。

    更可靠的方法是使用某种特殊的消息,即发送特殊的对象,该对象将被消费者解释为结束的信号。

    或者,不如考虑使用ExecutorService 和它的shutdown method,它可以轻松完成工作,并且它是此类问题的标准解决方案。

    【讨论】:

      猜你喜欢
      • 2010-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多