とにかく、数秒後、たとえば5秒後にJavaプログラムを終了できますか。
次を使用してJavaプログラムを終了できることを知っています:
System.exit(0);
しかし、このコード以降、0 が秒を表しているかどうかはわかりません。
System.exit(10);
もすぐに出ます
System.exit(0) は、プログラムの終了エラー コードを指定します。
タイマーに入れてタスクをスケジュールできます
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class TimedExit {
Timer timer = new Timer();
TimerTask exitApp = new TimerTask() {
public void run() {
System.exit(0);
}
};
public TimedExit() {
timer.schedule(exitApp, new Date(System.currentTimeMillis()+5*1000));
}
}
そして、TimedExit() を呼び出すだけです。
Thread.sleep()
プログラムを終了する直前に呼び出すことができます。
// Your code goes here.
try
{
Thread.sleep(5000);
}
catch (InterruptedException e)
{
// log the exception.
}
System.exit(0);
System.exit(int)メソッドのドキュメントから:
現在実行中の Java 仮想マシンを終了します。引数はステータス コードとして機能します。慣例により、ゼロ以外のステータス コードは異常終了を示します。
終了を待っている間に何かを実行する必要がある場合は、次のように終了を実行する適切なタイミングを待つだけの制御スレッドを作成できます。
public class ExitFewMiliseconds {
public static void main(String args[]) {
new Thread(new Runnable() {
public void run() {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.exit(0);
}
}).start();
while (true) {
System.out.println("I'm doing something");
}
}
}
終了を待っている間に何も実行しない場合は、単純にThread.sleep(ms)を使用できます
System.exit(0) に渡す 0 は、終了するまでの待機時間とは関係ありません。 Javadoc はあなたの友達です。javadoc から:
引数はステータス コードとして機能します。慣例により、ゼロ以外のステータス コードは異常終了を示します。
他の回答では、本当に必要な場合に終了する前に5秒待つ方法について既に説明しています。