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

标签 java multithreading deque

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

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

最佳答案

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

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

或者,可以考虑使用 ExecutorService 来实现此目的及其 shutdown method它可以轻松完成工作,并且是此类问题的标准解决方案。

关于java - 向 LinkedBlockingDeque 客户端发出信号停止消费的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35963170/

相关文章:

c++ - 使用类对象对双端队列进行排序

java - 如何让log4j打印消息来源?

java - Java 的值传递是否意味着我的类不需要 deepCopy 函数?

c++ - 双端队列问题和索引运算符超出双端队列大小

java - 在 CompletableFuture 回调中为类成员属性设置值是否线程安全?

java - java中的并行流

iphone - 从 UITableView 中取出可重用单元格

java - 在 toString() 中使用继承/扩展的具体类名

JAVA:为什么我对 Hashmap 中特定键的 ArrayList 值的更新会更改所有其他键值?

java - 将图像从网站加载到 Android 应用程序