java - 如果任何其他线程未调用 await(),线程的某些子类是否可以调用 Condition 的函数 signal()?
问题描述
例如,两个线程(Informer 和 Watcher)使用相同的 List。Informer 在 List 中添加数据,如果集合为空或 Informer 访问 List,则 Watcher 无法读取集合。如果 Informer 调用函数 Condition.signal() 但未创建或未启动 Watcher(Watcher 未调用 Condition.await() )会发生什么?
解决方案
signal
是的,即使没有等待线程也可以调用。等待的线程会错过这个信号,当它调用时会被阻塞await()
。
推荐阅读
- c# - Windows Server 2008 R2 上的 Windows 应用程序崩溃
- python - 如何根据列值将熊猫数据框划分为更小的数据框?
- vue.js - 如何在登录时更新状态值
- javascript - 我想要按钮,单击它时首先检查密码,如果密码为 abcd,则显示另一个提交按钮,否则显示警报
- bash - Bash,远程服务器上的命令在失败的情况下返回 true
- angular - Ionic 4 阴影 DOM 样式
- python - Dask - 创建空数组以填充并保存它
- html - 除非在 REACT 应用程序中刷新,否则 HTML 小部件 API 不会显示
- python - 将计算值的函数定义为整个字典
- android - 无法解析 Widget.MaterialComponents.TextInputLayout.*.ExposedDropdownMenu