【发布时间】:2016-06-28 01:16:15
【问题描述】:
向 LinkedBlockingDeque 客户端发出停止消费信号的最佳方式是什么?
服务线程将停止写入双端队列,但如果队列为空,消费线程将阻塞。我需要做的是让消费线程从队列中获取所有内容并关闭。中断是好的解决方案吗?
【问题讨论】:
标签: java multithreading deque
向 LinkedBlockingDeque 客户端发出停止消费信号的最佳方式是什么?
服务线程将停止写入双端队列,但如果队列为空,消费线程将阻塞。我需要做的是让消费线程从队列中获取所有内容并关闭。中断是好的解决方案吗?
【问题讨论】:
标签: java multithreading deque
Thread.interrupt() 通常不是一个好主意,因为它可能会导致线程当前正在处理的工作中断。
更可靠的方法是使用某种特殊的消息,即发送特殊的对象,该对象将被消费者解释为结束的信号。
或者,不如考虑使用ExecutorService 和它的shutdown method,它可以轻松完成工作,并且它是此类问题的标准解决方案。
【讨论】: