发信号通知LinkedBlockingDeque客户端停止消费的最佳方法是什么?

时间:2016-03-12 20:52:37

标签: java multithreading deque

通知LinkedBlockingDeque客户端停止消费的最佳方式是什么?

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

1 个答案:

答案 0 :(得分:1)

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

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

或者,考虑使用ExecutorService进行此操作及其shutdown method可以轻松完成工作,这是此类问题的标准解决方案。