使用事件在线程之间传递信息

时间:2013-06-17 11:43:54

标签: java multithreading events

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

如果可以,我在哪里可以找到一个可以使用的通用示例?

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

Passing a Set of Objects between threads

3 个答案:

答案 0 :(得分:0)

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

  1. 一个线程发送位于静态类的List中的信息 而 其他
  2. 线程正在从静态Clas列表中读取,如果     第一个线程存在一些数据发送,这个线程会     根据那个进行一些操作。

答案 1 :(得分:0)

  

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

  

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

事件和事件监听器比解决此问题所需的内容更复杂。

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

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

如果您的消费者线程在队列中找不到任何内容,它将进入休眠状态X毫秒,然后再次检查队列。

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

答案 2 :(得分:0)

  

“消费者会做很多事情,但也会倾听   对于制片人事件“。

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