如何立即释放在BlockingQueue上等待的线程

2024-01-09

考虑一个BlockingQueue和一些等待的线程poll(long, TimeUnit)(也可能在take()).

现在队列是空的,需要通知等待线程它们可以停止等待。预期的行为是null退回或申报的InterruptedException thrown.

Object.notify()不会为LinkedBlockingQueue因为线程正在等待内部锁。

有什么直接的方法吗?


BlockingQueue 的 Javadoc 提出了一个好方法:

BlockingQueue 本质上并不 支持任何类型的“关闭”或 “关机”操作表明 将不会添加更多项目。需求 这些功能的使用往往是 取决于实施。例如, 生产者的一个常见策略是 插入特殊的流尾或毒药 被解释的对象 消费者采取相应措施时。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何立即释放在BlockingQueue上等待的线程 的相关文章

随机推荐

  • 如何使用OpenGL和QT?

    我正在开发一个小项目 我需要使用 OpenGL QT 我在这两个方面都是新手 所以我需要一个很好的教程来说明如何彼此合作而不是单独合作 在 QT Creator 上运行 OpenGL 还是使用 QT Visual Studio Plug i
  • ScrollView 重叠工具栏

    我尝试使用 ScrollView 和 Toolbar 作为 LinearLayout 的唯一子级 但它们彼此重叠 搜索了一下 但没有找到任何有用的东西 知道如 何解决这个问题而不是给 ScrollView 提供填充 边距吗
  • 如何阻止读取 C++ stringstream 以等待数据

    因此 我一直试图弄清楚如何等待来自 C stringstream 的数据 例如 而不需要不断检查数据是否存在 这非常消耗 CPU 例如 我完全能够从串行设备读取数据 并在没有数据到达时锁定进程 但不幸的是我无法弄清楚如何使用 C 流来做到这
  • 两个数组到哈希组合中奇怪的乘法运算符行为

    我正在寻找一种将两个数组转换为单个散列的方法 我发现了这样的东西 a1 1 2 3 a2 A B C Hash a1 zip a2 flatten 我觉得这个语法有点奇怪 因为Hash a1 zip a2 会做完全相同的事情 但更重要的是
  • Nodejs PM2集群模式实现负载均衡

    使用 pm2 集群时 会出现一个非常严重的警告 提示您不应在生产中使用它 也不应用于负载平衡 请改用 nginx 不幸的是 这正是我计划使用 PM2 的方式 它真的不打算用于此目的还是只是还没有完全准备好 Nodejs集群 0 10 有很多
  • Emacs shell 模式 SSH 会话中的 Tab 补全

    我当前的 emacs 使用模式导致我打开了多个 shell 模式缓冲区 每个缓冲区都运行一个 ssh 会话 不过 我遇到了一个问题 当我尝试在远程会话中使用制表符补全文件名和其他内容时 shell 尝试使用本地计算机上可用的补全 而不是远程
  • R:将日期从字符转换为日期时间[重复]

    这个问题在这里已经有答案了 I have df date作为下面的字符类型 date 1 2016 04 10T12 21 25 4278624 2 2016 04 12T10 01 42 9573987 3 2016 04 12T10 0
  • 有没有办法在运行时停止/重新启动 ejb 3.1 自动计时器?

    我正在尝试使用一个简单的自动 EJB 计划 计时器 我的代码是这样的 Singleton Lock LockType READ public class Scheduler Schedule second 0 minute 20 hour
  • 如何使用javascript更改标签的值?

    这是我的html代码 a href myfile html Old File gt 我想更改名称为 新文件 的标签的值 所以我写了像 document getElementById tagId value New File 这样的javas
  • wav <> mp3 for flash(as3)

    我想知道 MP3 解码 编码 我希望使用 AS3 在 Flash 中实现这一点 我确信这将是一个正确的痛苦 我不知道从哪里开始 有人可以提供任何指示吗 参考资料 很久以后 非常感谢大家的意见 看来我还有很长的路要走 理论上 您也可以将其作为
  • 使用 OpenGL 和 QT 进行纹理映射 - C++

    我在使用 OpenGL 和 Qt 将纹理映射到四边形时遇到问题 我查看了其他几个 SO 线程 但是许多函数调用的使用方式必须略有不同才能进行编译 Qt Verison 4 8 6 这是我的相关代码 现在所发生的只是一个窗口显示为黑色背景 但
  • 如何保存openFileDialog中的最后一个文件夹?

    如何使我的应用程序存储最后打开的路径openFileDialog新开后恢复吗 OpenFileDialog openFileDialog1 new OpenFileDialog openFileDialog1 Filter txt file
  • 如何在 Ubuntu Desktop 12.04 上设置 ANT_HOME?

    看起来Ubuntu使用的是 bashrc bash profile pam profile etc environment and etc profile以非常相似的方式 我希望能够向其中之一添加配置 无论哪一个是合适的 来设置ANT HO
  • 如何从内容页访问 TextArea 值

    我的内容页面中有一个 TextArea 控件 位于 UpdatePanel 内
  • 如何让 Xcode 将自定义文件扩展名识别为 Objective-C 以进行语法突出显示?

    我想让 Xcode 4 将自定义文件扩展名 例如 lx 识别为 Objective C 以实现语法突出显示和缩进目的 如何让工具自动执行此操作 Xcode 根据文件的属性确定如何在其用户界面中表示文件统一类型标识符 https develo
  • Angular Material 日期选择器 |延迟加载 + CustomDateAdapter + 国际化 - RangeError:超出最大调用堆栈大小

    结构问题 我不太确定是否找到了这两行代码的正确位置 providers provide MAT DATE LOCALE useValue de DE provide DateAdapter useClass CustomDateAdapte
  • 使用 blazor 加载外部 .NET Standard 2.0 程序集

    在 Blazor 应用程序中 我想加载外部程序集并执行方法 为此 我使用 Blazor 模板创建了一个新的 ASP Net Core Web 应用程序 然后 在 Razor 页面 将由浏览器 wasm 编译和执行 中 我使用反射来加载程序集
  • Chrome 扩展:等待元素加载(异步 js)

    我有一个 Chrome 扩展程序 我想等到元素加载后再将内容注入页面 我正在尝试注入一个按钮 myButton document createElement button myButton class mybutton document q
  • 复杂的声明

    如何解释复杂的声明 例如 int fp1 int 10 gt declaration 1 int 5 gt declaration 2 理解上述声明有什么规则需要遵循吗 这是一篇关于如何阅读 C 中的复杂声明的精彩文章 http www c
  • 如何立即释放在BlockingQueue上等待的线程

    考虑一个BlockingQueue和一些等待的线程poll long TimeUnit 也可能在take 现在队列是空的 需要通知等待线程它们可以停止等待 预期的行为是null退回或申报的InterruptedException throw