私は JADE を Java プログラムに埋め込んで実行してい java jade.Boot ...
ます。今、私は JADE システムを止めたいと思っていましたが、良い方法が見つかりませんでした。System.exit() を使用してプログラム全体を終了できますが、それは私がやりたいことではありません。
いくつかの異なることを試し、エージェントの動作を停止することに成功しましたが、いくつかのスレッド (AMS、DF、Web サーバー、JADE タイマー ディスパッチャ、いくつかの配信スレッドなど) は引き続き実行されています。
これは私の現在のシャットダウン方法がどのように見えるかです:
@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 テストがいくつかあるからです。
それを達成する方法はありますか?