我的应用程序有一个单例类(与串行 COM 端口通信),用于处理来自多个线程的数据请求。当处理其请求时,线程应该wait()
。如何在不唤醒所有等待线程的情况下通知线程数据已准备好(并将其发回)?
最佳答案
创建一个blocking queue对于每个线程并将它们注入(inject)到您的单例中。当任何答案到达时,只需选择适当的线程队列并将带有 Offer(E o) 方法的消息放入其中即可。
在使用 take() 方法的线程中,您可以无限时间等待答案,或使用 poll(long timeout, TimeUnit unit) 进行时间盒等待。
您可以使用额外的 concurrent queue喂养单例而不阻塞它。
关于java - 向特定线程发送数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17353011/