通知LinkedBlockingDeque客户端停止消费的最佳方式是什么?
服务线程将停止写入Deque,但如果队列为空,则消耗线程将阻塞。我需要做的是让消费线程从队列中取出所有内容并关闭。中断好解决方案吗?
答案 0 :(得分:1)
Thread.interrupt()
通常不是一个好主意,因为它可能会导致中断当前线程正在进行的工作。
更可靠的方法是使用某种特殊信息,即发送特殊对象,将被解释为信号以供消费者使用。
或者,考虑使用ExecutorService
进行此操作及其shutdown method可以轻松完成工作,这是此类问题的标准解决方案。