を終了したときに引き続き、私はこの単純なコードを持っているがutil.Timer
Java.util.Timer - 私は、コードを実行すると、プロセスのメインスレッドが
public class CheckDBAccessListOpenAccesses extends TimerTask {
public static void main(String[] args) {
CheckDBAccessListOpenAccesses object = new CheckDBAccessListOpenAccesses();
}
private CheckDBAccessListOpenAccesses() {
System.out.println("Start");
Timer whatAccessAreOpen = new Timer();
whatAccessAreOpen.scheduleAtFixedRate(this, TimeUnit.MINUTES.toMillis(1), TimeUnit.MINUTES.toMillis(1));
Thread.sleep(100*60*1000);
System.out.println("finish");
}
@Override
public void run() {
System.out.println("one minute");
}
}
を使用して、プロセスは永遠に実行されます。 メインスレッドが終了したときにプロセスを停止したい。なぜタイマーはプロセスを生かし続けるのですか?それを防ぐ方法はありますか?
あなたはタイマー#スケジュールは同じスレッドで実行することを意味しない、答えてくれてありがとうとタイマーをインスタンス化し、生きているプロセスを維持するからタイマーを防止するために
主な機能として? –
@ NoIdeaForNameようこそ。ドキュメンテーションは具体的ではありませんが、 'schedule'メソッドは起動しているスレッドと同じスレッドでは実行されません。それ以外の場合はブロックされます。これはあまり役に立ちません。あなたが望むのは、あなたの 'Timer'のインスタンスがメインスレッドで見えるようにするためです。完了したら' cancel'を呼び出すことができます。 – Mena