Java线程通信

标签 java multithreading semaphore

我正在做一个项目,我必须让线程进行通信。

例如

我有两个线程数组,c[100]e[10] 。 (客户和员工)

一旦客户说 c[3]获取一个信号量,让它与其中一名员工交谈,员工说 e[5] ,如何关联 Customer线程代表的对象c[3]Employee对象e[5] ,并让他们来回传递信息?

最佳答案

有多种技术可以允许线程通信信息。最简单的方法是共享状态上的互斥体。最经典的可扩展方式之一是消息队列。您需要使用的方式取决于您的作业说明。

一般来说,使用同步原语(无论是互斥锁、信号量还是其他什么)来保护共享状态,并让非共享状态正常运行。如果您有员工和客户,也许他们通过共享的“邮件槽”进行通信。使用信号量保护该邮件槽,以防止一个人在另一个人正在写入时尝试读取(反之亦然),这样您就拥有了所需的主要策略。

关于Java线程通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5614625/

相关文章:

java - 类型参数导致错误

windows - C++ 信号量和 _popen 用法

java - 为什么java中Semaphore类的acquireUninterruptically()方法不能按预期工作?

java - Xades4j验证封装签名

Java new泛型类的实例

multithreading - 如何只使用程序可用的带宽

linux - 如何防止 Perl 脚本并行运行多次

java - 具有动态布局的自定义对话框未正确显示

java - 使用 java API 在 titan 中设置我们自己的顶点 id

C、MPI线程通信问题