import java.awt.Toolkit;
import java.util.Timer;
import java.util.TimerTask;
public class Java {
Toolkit toolkit;
Timer timer;
int t=10000,total;
public Java(int seconds) {
toolkit = Toolkit.getDefaultToolkit();
timer = new Timer();
total =seconds * t;
System.out.println(total);
timer.schedule(new RemindTask(), total);
}
class RemindTask extends TimerTask {
public void run() {
System.out.println("Time's up!");
toolkit.beep();
System.exit(0);
}
}
public static void main(String args[]) {
new Java(5);
System.out.println("Timer started");
}
}
如何在输出屏幕中显示类似于倒计时器的秒数,我想在测验程序中使用它
0:53 => 0:52 像这样 ...
最佳答案
您可以做的是使用 1 秒
的周期以固定速率 (Timer.scheduleAtFixedRate
) 安排任务。我们应该尽可能避免调用 System.exit(0) 并等待线程完成其任务。我们可以让主线程(启动计时器的线程)在计时器任务期间 hibernate ,然后当它最终醒来时,它取消计时器:
private final Timer timer;
public CountDownTimer(int seconds) {
timer = new Timer();
timer.scheduleAtFixedRate(new RemindTask(seconds), 0, 1000);
}
class RemindTask extends TimerTask {
private volatile int remainingTimeInSeconds;
public RemindTask(int remainingTimeInSeconds) {
this.remainingTimeInSeconds = remainingTimeInSeconds;
}
public void run() {
if (remainingTimeInSeconds != 0) {
System.out.println(remainingTimeInSeconds + " ...");
remainingTimeInSeconds -= 1;
}
}
}
public static void main(String args[]) throws InterruptedException {
CountDownTimer t = new CountDownTimer(5);
System.out.println("Timer started");
Thread.sleep(5000);
t.end();
}
private void end() {
this.timer.cancel();
}
关于java - 如何在输出屏幕中显示计时器的秒数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36678896/