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