【问题标题】:Multiple agents thread synchronization多代理线程同步
【发布时间】:2015-03-09 20:34:15
【问题描述】:

我有一个 java 代码,应该由多个代理读取,它 由 JADE 平台创建。每个代理都有自己的执行线程。 因此,我的所有代理同时运行我的 java 代码,但不是同时运行。 我尝试过使用 java API 中的 Class CyclicBarrier,应该 以使所有代理的线程在通过时聚集在一起的方式创建屏障 通过这个障碍,但是这个类不适用于代理的线程, 仅适用于 java 线程。 有人知道同步这些代理线程的方法吗? 有什么建议吗?

【问题讨论】:

标签: multithreading agent thread-synchronization agents-jade multi-agent


【解决方案1】:

Jade 中的代理在线程上运行并在该线程上处理其行为这一事实意味着可以利用 java 并发包 (java.util.concurrent.CyclicBarrier) 中的 CyclicBreaker。或者更简单的形式是 CountDownLatch。但这本身就是一个 OneShotBehaviour 实现。

代理行为的排序可以通过在每个交互代理行为中使用 switch case 来完成

int state = 0;
switch(state){
 state 0:
   // Do action one
   break;
 state 1:
   // Do action two
   break;
}
state++;

【讨论】:

    【解决方案2】:

    我以这种方式延迟了相同的代理:

    try{
      Thread.sleep(1000);                 //1000 milliseconds is one second.
    } catch(InterruptedException ex) {
      Thread.currentThread().interrupt();
    }
    

    希望能帮到你。

    【讨论】:

    • 等待挂钟不是任何方面的同步机制。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-25
    • 1970-01-01
    • 2021-11-02
    • 2011-11-09
    • 2011-12-28
    • 1970-01-01
    相关资源
    最近更新 更多