上記の回答では、起動/シャットダウン以外のコードがあると問題が発生する可能性があります。あなたは(そのようか何か)は、ArrayIndexOutOfBoundsExceptionになってしまいますので、アプリケーションがシャットダウンを呼び出すことはありません
public class QuartzTest {
public static void main(String[] args) {
try {
// Grab the Scheduler instance from the Factory
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
// and start it off
scheduler.start();
System.out.println(args[5]);
scheduler.shutdown();
} catch (SchedulerException se) {
se.printStackTrace();
}
}
}
:たとえば、あなたがこのようなものを持っている場合。これを解決するにはいくつかの方法がありますが、最も単純なのは、すべての中間コードを例外ハンドラにラップし、その中のものを「処理」することでしょう。たとえば、次のように パブリッククラスQuartzTest換言すれば、あなたはほぼ確実にどこかにあなたのコード内から `)(` scheduler.shutdown呼び出すべきである{
public static void main(String[] args) {
try {
// Grab the Scheduler instance from the Factory
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
// and start it off
scheduler.start();
try {
System.out.println(args[5]);
} catch (Exception e) {
e.printStackTrace();
}
scheduler.shutdown();
} catch (SchedulerException se) {
se.printStackTrace();
}
}
}
、あなたがいない場合ので、アプリはおそらく停止しません。最終的なブロックは、アプリケーションの設計に応じて、適切な場所である場合とそうでない場合があります。アプリケーションのシャットダウン時にトリガされるイベントリスナは、 'scheduler.shutdown()'を置くための別の場所です。クォーツを停止しないと(例えば、Webアプリケーションで)、クラスローダーに関連した深刻なメモリリークが発生する可能性があります。 –