是否可以使用事件和事件侦听器在 Java 中的两个线程之间传递一组信息?如果我将我的问题简化为它的基础,我就会有一个生产者和消费者,每个人都“生活”在自己的线程上。生产者创建消息,一旦创建消息,它“理想地”就会向消费者发送一个事件。消费者会做很多事情,但也会监听生产者事件。这意味着消费者不能被阻塞或等待生产者。
如果这是可能的,我在哪里可以找到一个通用的例子来工作?
有关模型的更多信息,请参阅
是否可以使用事件和事件侦听器在 Java 中的两个线程之间传递一组信息?如果我将我的问题简化为它的基础,我就会有一个生产者和消费者,每个人都“生活”在自己的线程上。生产者创建消息,一旦创建消息,它“理想地”就会向消费者发送一个事件。消费者会做很多事情,但也会监听生产者事件。这意味着消费者不能被阻塞或等待生产者。
如果这是可能的,我在哪里可以找到一个通用的例子来工作?
有关模型的更多信息,请参阅
“消费者会做很多事情,但也会监听生产者事件”。
只需统一消费者线程的所有作业执行 - 将所有“事物”放在消费者的输入队列中,这样消费者只有在真的无事可做时才会阻塞。
是否可以使用事件和事件侦听器在 Java 中的两个线程之间传递一组信息?
是的。
如果我将我的问题简化为它的基础,我就会有一个生产者和消费者,每个人都“生活”在自己的线程上。生产者创建消息,一旦创建消息,它“理想地”就会向消费者发送一个事件。
事件和事件侦听器比解决此问题所需的复杂。
你需要的是一个消息队列。
Java 提供了AbstractQueue 的ConcurrentLinkedQueue实现。您的生产者线程将消息添加到队列中,而您的消费者线程从队列中获取消息(轮询)。
如果你的消费者线程在队列中没有发现任何东西,它会休眠 X 毫秒,然后再次检查队列。
如果您决定仍要使用事件和事件侦听器,请阅读这篇内容丰富的文章Event Listener。您必须使List
存储事件侦听器的 s 线程安全。
是的,您可以将一些消息从一个线程传递给另一个线程在特定事件上,
您应该有第三个静态类应该让这些线程运行,