我有非常模糊的用例,但本质上我需要知道另一个线程是否执行 SynchronousQueue poll
(带有超时),并且我想插入项目并取消阻止它。
有什么简单的方法可以做到这一点吗?从我天真的阅读 javadoc 和代码的代码来看,似乎没有,但我想我会检查 SOE。
最佳答案
如果您实现了此逻辑,并且您的生产者线程每次发现有另一个线程在轮询上被阻塞时都会向队列添加值,该怎么办?如何保证您的生产者放入队列的值将被该线程而不是另一个线程消耗?
建议改变你的设计。生产者 - 将值添加到队列的线程 - 应该对消费者一无所知。让你产生一个请求消费者。我的意思是定义另一个队列并让当前线程使 poll
提交请求
。当前的生产者线程从该新队列获取请求并满足请求。您可以实现请求对象,使其作为两个线程之间的中介。
关于java - 如何知道另一个线程是否进行 SynchronousQueue 轮询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53802442/