runメソッド内でcancel()を呼び出すと、My CheckStatus(TimerTask)が停止していません。 this.cancel()も機能しません。私は間違って何をしていますか?Java TimerTask not cancelling
import java.util.TimerTask;
class CheckStatus extends TimerTask {
int s = 3;
public void run() {
if (s > 0)
{
System.out.println("checking status");
s--;
}
else
{
System.out.println("cancel");
cancel();
}
}
}
相続人は私のドライバ
import java.util.*;
class Game {
static Timer timer;
static CheckStatus status;
public static void main(String[] args) throws InterruptedException {
CheckStatus status = new CheckStatus();
timer = new Timer();
timer.scheduleAtFixedRate(status, 0, 3000);
}
}
タイマーが完了したらプログラムが終了することを期待していました。 – Raptrex
@Raptrex:しかし、「Timer」*はまだ行われていません。まだ利用可能です。スケジュールされていないだけです。 JVMが認識している限り、別のタスクがJVMに別のタスクを追加する可能性があります。今度は、デーモンスレッドで実行できるようにすることができます( 'Timer'コンストラクタに' true'を渡します)が、あなたのタスクがキャンセルされるまでメインスレッドを生かしておく必要があります。これが大規模なプログラムの一部であると仮定すると、より多くの文脈を知らなくてもあなたに助言する方法を知るのは難しいです。 –