У меня есть код Java, который должен быть прочитан несколькими агентами, которые были созданы платформой JADE. У каждого агента есть свой поток выполнения. Поэтому все мои агенты запускают мой Java-код одновременно, но не одновременно. Я пытался использовать класс CyclicBarrier из java API, который должен создать барьер таким образом, чтобы все потоки агента собирались вместе при прохождении через этот барьер, но этот класс не работает для потоков агента, только для java потоки. Кто-нибудь знает способ синхронизации потоков этих агентов? Любые предложения?Синхронизация потоков нескольких агентов
0
A
ответ
-1
Я поставил задержку в тех же агентов таким образом:
try{
Thread.sleep(1000); //1000 milliseconds is one second.
} catch(InterruptedException ex) {
Thread.currentThread().interrupt();
}
Я надеюсь, чтобы помочь вам.
0
Тот факт, что Агенты в Джейд работают по потоку и обрабатывают свое поведение в этом потоке, означает, что можно использовать CyclicBreaker из пакетов Java-совместимости (java.util.concurrent.CyclicBarrier). Или более простой формой будет CountDownLatch. Но это само по себе, реализация OneShotBehaviour.
Секвенирование поведения агента может быть сделано с помощью переключателя в случае каждого взаимодействующего поведения агента
int state = 0;
switch(state){
state 0:
// Do action one
break;
state 1:
// Do action two
break;
}
state++;
Зачем вам нужна синхронизация агента? Агенты должны работать самостоятельно. В любом случае, вы можете настроить для этого протокол. Вот пример: http://www.db-thueringen.de/servlets/DerivateServlet/Derivate-19681/ESM2009_S337-341.pdf – darlinton