java - 向特定线程发送数据

标签 java multithreading concurrency

我的应用程序有一个单例类(与串行 COM 端口通信),用于处理来自多个线程的数据请求。当处理其请求时,线程应该wait()。如何在不唤醒所有等待线程的情况下通知线程数据已准备好(并将其发回)?

最佳答案

创建一个blocking queue对于每个线程并将它们注入(inject)到您的单例中。当任何答案到达时,只需选择适当的线程队列并将带有 Offer(E o) 方法的消息放入其中即可。

在使用 take() 方法的线程中,您可以无限时间等待答案,或使用 poll(long timeout, TimeUnit unit) 进行时间盒等待。

您可以使用额外的 concurrent queue喂养单例而不阻塞它。

关于java - 向特定线程发送数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17353011/

相关文章:

java - 矩形碰撞检测系统不起作用

java - JSONObject 无法转换为 JSONArray , jsonObject.getJSONArray(KEY_DATA) 不起作用

java - 如何获取从图库中选择的图像的目录和文件名

java - 线程不 hibernate

Java如何在程序重新启动后保持相同的窗口布局

c# - 将 Parallel.ForEach 限制为仅 64 个操作

c++ - 将线程的日志数据转储到公共(public)缓冲区

concurrency - 为什么并发写入的boolean值设置为false后还是true?

java - "non-managed"实用程序类的并发访问和扩展

java - 集群、无状态 Web 应用程序 - 如何处理并发请求?