java - 如何在输出屏幕中显示计时器的秒数?

标签 java

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/

相关文章:

Spring Security 4升级后java.lang.NoSuchMethodError org.springframework.web.servlet.tags.form.InputTag.setDisabled

java.lang.ClassNotFoundException : org. apache.poi.xssf.usermodel.XSSFWorkbook

java - 将突出显示文本应用于多个文本行

java - BufferedWriter 如何不覆盖已保存的文本?

java - 当配置影响方法结果时进行适当的测试?

java - 如何在android中调整位图图像对比度?

java - 尝试使用jsp获取url内容时发现错误302

java - spring中的多个属性文件

java - 如何打印 TicTacToe 棋盘之间的线条

java - 是否可以让多人同时处理同一个 Eclipse 项目? (比如谷歌文档)