如何让节点等到拓扑被定义

How to make nodes wait till the topology is defined

我正在尝试在 JBotSim 上实现分布式算法。当我在 Main class 中定义整个拓扑时,我的算法有效,但是当我在 canvas 上绘制图表时,似乎第一个绘制的节点在我完成绘制图表之前启动算法,使我的算法完全不同步。

知道如何解决这个问题吗?

谢谢。

如果拓扑自动启动,如本例所示,

public static void main(String[] args){
    Topology topology = new Topology();
    new JViewer(topology);
    topology.start();
}

那么当您添加节点时拓扑已经运行。因此,只要将每个节点添加到拓扑中,就会调用每个节点上的 onStart() 方法(实际上,这会使它们以非同步方式启动)。

这里的一个解决方案是删除对 topology.start() 的调用,并在添加所有节点后手动启动拓扑。这可以在上下文菜单中完成(右键单击 >“开始执行”)。