java - 如何知道另一个线程是否进行 SynchronousQueue 轮询?
问题描述
我有一个非常模糊的用例,但本质上我需要知道另一个线程是否执行 SynchronousQueue poll
(有超时),它是否我想插入项目并取消阻止它。
有没有直接的方法可以做到这一点?从我天真的阅读 javadoc 和代码的代码来看,似乎没有,但我想我会用 SOE 进行检查。
解决方案
如果您实现了这个逻辑,并且您的生产者线程每次发现有另一个线程阻塞时都会向队列添加值poll
- 哪里可以保证生产者放入队列的值将由该线程而不是另一个线程消耗?
建议改变你的设计。生产者 - 向队列添加值的线程 - 应该对消费者一无所知。让你产生一个请求消费者。我的意思是定义另一个队列并使您当前的线程poll
提交一个request
. 您当前的生产者线程从该新队列中获取请求并满足请求。您可以将请求对象作为两个线程之间的中介来实现。
推荐阅读
- python - 烧瓶上的错误 404
- c# - How to access ServiceStack based web service from visual studio webform
- javascript - Firebase - 允许用户根据数据库信息访问部分数据库
- ruby-on-rails - Ruby:在数组中转换对象后传递键/值
- python - Metropolis-specific TypeError:输入的可广播模式对于此操作不正确
- vba - VBA 速度慢,不适用于较长的数据集
- swift - Swift 4 - 使用结构到数组解析 XML 文件
- vim - Vim 搜索和替换以修改结构相同但单词不同的字符串
- google-map-react - 您在此页面上多次包含 Google Maps JavaScript API
- python - 使用 Python 在一行中的特定位置提取特定单词