2017-05-12 12 views
0

JADE의 다중 에이전트 시스템에서 작업 중이며 WakerBehaviours를 사용하여 이벤트를 시뮬레이션합니다. 그러나 어떤 경우에는 WakerBehaviour가 너무 늦게 깨어나 문제를 일으 킵니다. 다음 코드에서 이것을 테스트했지만 while 루프가 완료된 후 "Im awake"메시지가 항상 팝업됩니다. 어떻게 내가 이것을 피할 수 있을까?WakerBehaviour가 다른 활동에 의해 차단되었습니다.

public class Test_Agent extends Agent { 
protected void setup() { 
    Tools.prnt(this, "starting waker"); 
    addBehaviour(new TickerBehaviour(this, 1000) { 
     protected void onTick() { 
      Tools.prnt(myAgent, "Im awake."); 
     } 
    }); 
    int i = 0; 
    while(i < 100000) { 
     System.out.println(i+" waiting."); 
     i++; 
    } 
} 

미리 감사드립니다. Cheers, Jacek

답변

0

내가 아는 한, 행동 처리는 setup() 후에 시작됩니다. 그 이유는 동작 내에서 루프를 이동해야하기 때문입니다. 루프 중에 이벤트를 처리하려면 루프를 피하고 순환 동작을 사용하십시오 (동작이 차례대로 처리되기 때문에).