他の人が言ったように、ポーリングしなければならないという事実は、おそらくシステムの設計に深刻な問題があることを示しています...
プロセスをもう少し適切に「強制終了」したい場合は、Ctrl+を押したときに呼び出されるシャットダウン フックをインストールできCます。
volatile boolean stop = false;
Runtime.getRuntime().addShutdownHook(new Thread("shutdown thread") {
public void run() {
stop = true;
}
});
その後、停止変数を定期的にチェックします。
より洗練された解決策は、イベントを待機することです。
boolean stop = false;
final Object event = new Object();
Runtime.getRuntime().addShutdownHook(new Thread("shutdown thread") {
public void run() {
synchronized(event) {
stop = true;
event.notifyAll();
}
}
});
// ... and in your polling loop ...
synchronized(event) {
while(!stop) {
// ... do JDBC access ...
try {
// Wait 30 seconds, but break out as soon as the event is fired.
event.wait(30000);
}
catch(InterruptedException e) {
// Log a message and exit. Never ignore interrupted exception.
break;
}
}
}
またはそのようなもの。