如何向所有线程发送消息

时间:2013-09-26 21:40:56

标签: java multithreading algorithm

我正在学习分布式系统,在阅读时我了解了Lamport Algo以及this article

现在我想实际执行此算法,但我不想使用不同的客户端。我想在线程中这样做。令我困惑的是,一个线程如何在时钟时间内向所有线程(不同进程)发送消息?

如果有人能给我结构,我怎么能用Java做这个Algo会很棒。

1 个答案:

答案 0 :(得分:3)

  

令人困惑的是,线程如何在时钟时间内向所有线程(不同进程)发送消息?

有很多方法可以做到这一点。您需要一个线程才能将消息发送到所有其他线程(或至少是关注的线程)。使用发布者/订阅者机制可以想到消息总线。一个建议是使用Guavas' Event Bus

手工操作会变得更难。您可以让每个帖子都有一个BlockingQueue的消息,发布者可以将消息添加到所有队列。也许是一个实用程序类,用于线程注册和注销自己及其队列。

如果您正在使用某种中央共享队列或消息数组,那么挑战在于知道所有线程何时消耗了特定消息。