0

是否可以使用事件和事件侦听器在 Java 中的两个线程之间传递一组信息?如果我将我的问题简化为它的基础,我就会有一个生产者和消费者,每个人都“生活”在自己的线程上。生产者创建消息,一旦创建消息,它“理想地”就会向消费者发送一个事件。消费者会做很多事情,但也会监听生产者事件。这意味着消费者不能被阻塞或等待生产者。

如果这是可能的,我在哪里可以找到一个通用的例子来工作?

有关模型的更多信息,请参阅

在线程之间传递一组对象

4

3 回答 3

0

“消费者会做很多事情,但也会监听生产者事件”。

只需统一消费者线程的所有作业执行 - 将所有“事物”放在消费者的输入队列中,这样消费者只有在真的无事可做时才会阻塞。

于 2013-06-17T19:48:46.973 回答
0

是否可以使用事件和事件侦听器在 Java 中的两个线程之间传递一组信息?

是的。

如果我将我的问题简化为它的基础,我就会有一个生产者和消费者,每个人都“生活”在自己的线程上。生产者创建消息,一旦创建消息,它“理想地”就会向消费者发送一个事件。

事件和事件侦听器比解决此问题所需的复杂。

你需要的是一个消息队列。

Java 提供了AbstractQueue 的ConcurrentLinkedQueue实现。您的生产者线程将消息添加到队列中,而您的消费者线程从队列中获取消息(轮询)。

如果你的消费者线程在队列中没有发现任何东西,它会休眠 X 毫秒,然后再次检查队列。

如果您决定仍要使用事件和事件侦听器,请阅读这篇内容丰富的文章Event Listener。您必须使List存储事件侦听器的 s 线程安全。

于 2013-06-17T14:11:48.150 回答
0

是的,您可以将一些消息从一个线程传递给另一个线程在特定事件上,
您应该有第三个静态类应该让这些线程运行,

  1. 一个线程在列表中发送信息,该列表位于静态类中,而
    其他
  2. 线程正在读取该静态类的列表,如果存在第一个线程发送的一些数据,则该线程将根据该列表执行一些操作。
于 2013-06-17T11:50:05.610 回答