这会暂停我的Java线程一分钟吗?

Sam*_*fee 1 java calendar

我在这里做的事真的很蠢吗?我试图每分钟左右执行一次方法,永远,或直到我停止程序.

    while(true) {
        this.doSomethingPeriodically();
        Calendar now = Calendar.getInstance();
        int minutes = now.get(Calendar.MINUTE);
        int resume = minutes + 1;
        while (now.get(Calendar.MINUTE) < resume) {
            // waiting for a minute
        }
    }
Run Code Online (Sandbox Code Playgroud)

Joa*_*uer 13

这段代码永远不会离开循环.这是一个无限循环,因为所Calendar引用的实例now不会改变.

此外,你在这里尝试做的是实现忙等待,这是一个非常糟糕的想法(它使用CPU时间无所事事).

睡觉的正确方法是使用Thread.sleep().