我需要编写一个多线程 Java 应用程序,我将在其中创建多个线程来处理不同类型的操作。例如,一个线程将监视应用程序的状态,一个线程将管理与集群中其他节点的通信,一个线程将具有一些应用程序逻辑等等。
在线程之间传递数据和信号的好方法是什么?例如,应用程序逻辑线程可能需要发送一条消息,它可以将其移交给通信线程。这里需要在两个线程之间传输数据。我认为的一种方法是使用一个队列,所有想要发送消息的线程都可以插入他们的消息。但是,它提出了一些问题:
- 用于插入的队列和方法需要是静态的或
- 每个希望发送消息的线程都必须具有通信线程的对象
此外,如果发送失败(例如,抛出异常),这样的 send 方法将无法告诉调用线程,因为一旦将消息插入队列,调用线程就会认为它发送了它的消息。
对于此类应用程序,在线程之间传递信号和数据的好方法是什么?
对于软件工程师来说,这可能是一个太基础的问题(我来自电子背景)。如果是这样,谁能指出我可以阅读有关设计多线程或多处理应用程序的好来源?
非常感谢。