我在Java程序中运行嵌入式JADE,即不使用
我尝试了几种不同的方法,并成功停止了代理行为, 但是还有一些线程继续运行:AMS、DF、Web服务器、JADE定时调度程序、几个Deliverer线程等。
这是我当前关闭方法的样子:
java jade.Boot ...
。
现在我想停止JADE系统,但是我没有找到好的方法来做到这一点。
我可以使用System.exit()退出整个程序,但这不是我想要的。我尝试了几种不同的方法,并成功停止了代理行为, 但是还有一些线程继续运行:AMS、DF、Web服务器、JADE定时调度程序、几个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测试。
有什么想法可以实现吗?
jade.core.messaging.MessageManager$Deliverer
)。这些实例的问题在于,我无法杀死它们正在运行的线程,因为它们忽略了InterruptedException... - daniel kullmann