Java 定时器计数太快

标签 java timer

我想写一个计时器类,每秒计数到0,但似乎计数太快了。我做错了什么?

public class Eieruhr {

    private int x;

    public Eieruhr (int x){
        this.x = x;
    }

    public static void main(String[] args){
        Eieruhr eu = new Eieruhr(10);
        eu.start();
    }

    public void start(){
        for(int i = 0; i <= x; x--){
            long s = System.nanoTime();
            while( ((System.nanoTime() - s) / 100000000) < x);
            System.out.println("tick - " + x);

        }
    }
}

最佳答案

我建议您使用TimeUnit.SECONDS.sleep(1)。看一下代码:

public class Eieruhr {
    private int x;

    public Eieruhr(int x) {
        this.x = x;
    }

    public static void main(String[] args) throws InterruptedException {
        Eieruhr eu = new Eieruhr(10);
        eu.start();
    }

    public void start() throws InterruptedException {
        for (int i = 0; i < x; i++) {
            TimeUnit.SECONDS.sleep(1);
            System.out.println(new Date() + " tick - " + i);
        }
    }
}

输出:

Sat Oct 19 15:11:37 EEST 2019 tick - 0
Sat Oct 19 15:11:38 EEST 2019 tick - 1
Sat Oct 19 15:11:39 EEST 2019 tick - 2
Sat Oct 19 15:11:40 EEST 2019 tick - 3
Sat Oct 19 15:11:41 EEST 2019 tick - 4
Sat Oct 19 15:11:42 EEST 2019 tick - 5

关于Java 定时器计数太快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58459527/

相关文章:

java - 在用户定义的时间执行任务

c# - 带有计时器的简单应用程序正在消耗内存?

java - 将 Java App 变成 Windows 屏幕保护程序

java - 将 OOP java 转换为现代 C++ 代码、抽象方法和接口(interface)方法

java - 暂停并继续 Runnable 对象?

java - 在java中打印出与我的正则表达式匹配的字符串?

c - QT 计时器(开始/暂停)

Java按键事件和定时器控制

c++ - 系统运行时是否有延迟计时器?

java - 为什么在 Java 泛型中需要通配符?