如何停止正在运行的TimerTask

我正在尝试制作一个简单的计时器,该计时器在指定的秒数后发出提示音。我设法使其正常工作,但是TimerTask在蜂鸣声后继续运行。现在我停止执行吗?这是我的代码:

import java.util.Scanner;

import java.util.Timer;

import java.util.TimerTask;

import java.awt.Toolkit;

class Alarm {

public static void main(String[] args) {

long delay;

Scanner scan = new Scanner(System.in);

System.out.print("Enter a delay in seconds: ");

delay = scan.nextInt()*1000;

Timer timer = new Timer();

TimerTask task = new TimerTask() {

@Override

public void run() {

Toolkit.getDefaultToolkit().beep();

}

};

timer.schedule(task, delay);

}

}

回答:

您需要通过调用以下方法来取消计时器

timer.cancel();  // Terminates this timer, discarding any currently scheduled tasks.

timer.purge(); // Removes all cancelled tasks from this timer's task queue.

这将取消任务,因此可以执行以下操作:

import java.util.Scanner;

import java.util.Timer;

import java.util.TimerTask;

import java.awt.Toolkit;

class Alarm {

private static boolean run = true;

public static void main(String[] args) {

long delay;

Scanner scan = new Scanner(System.in);

System.out.print("Enter a delay in seconds: ");

delay = scan.nextInt()*1000;

final Timer timer = new Timer();

final TimerTask task = new TimerTask() {

@Override

public void run() {

if(run) {

Toolkit.getDefaultToolkit().beep();

} else {

timer.cancel();

timer.purge();

}

}

};

timer.schedule(task, delay);

// set run to false here to stop the timer.

run = false;

}

}

以上是 如何停止正在运行的TimerTask 的全部内容, 来源链接: utcz.com/qa/415228.html

回到顶部