我运行嵌入在 Java 程序中的 JADE,即不使用 java jade.Boot ...
. 现在我想停止 JADE 系统,但我没有找到好的方法来做到这一点。我可以使用 System.exit() 退出整个程序,但这不是我想要做的。
我尝试了几种不同的方法,并成功停止了我的代理行为,但有几个线程继续运行:AMS、DF、Web 服务器、JADE Timer 调度程序、几个 Deliverer 线程等。
这是我当前的关闭方法的样子:
@Override
public void shutdown() {
// TODO This does not work yet..
try {
for (WeakReference<AgentController> acr : agents) {
AgentController ac = acr.get(); // jade.wrapper.AgentController
if ( ac != null ) ac.kill();
}
container.kill(); // jade.wrapper.AgentContainer
Runtime.instance().shutDown(); // jade.core.Runtime
} catch ( StaleProxyException e ) {
e.printStackTrace();
}
}
我想这样做的原因是我的代理系统有一些 JUnit 测试。
任何想法如何做到这一点?