我正在学习分布式系统,在阅读时我了解了Lamport Algo以及this article。
现在我想实际执行此算法,但我不想使用不同的客户端。我想在线程中这样做。令我困惑的是,一个线程如何在时钟时间内向所有线程(不同进程)发送消息?
如果有人能给我结构,我怎么能用Java做这个Algo会很棒。
答案 0 :(得分:3)
令人困惑的是,线程如何在时钟时间内向所有线程(不同进程)发送消息?
有很多方法可以做到这一点。您需要一个线程才能将消息发送到所有其他线程(或至少是关注的线程)。使用发布者/订阅者机制可以想到消息总线。一个建议是使用Guavas' Event Bus。
手工操作会变得更难。您可以让每个帖子都有一个BlockingQueue
的消息,发布者可以将消息添加到所有队列。也许是一个实用程序类,用于线程注册和注销自己及其队列。
如果您正在使用某种中央共享队列或消息数组,那么挑战在于知道所有线程何时消耗了特定消息。