Thread.sleep()方法;在Java中

时间:2013-10-06 21:47:51

标签: java loops do-while thread-sleep

每当我使用Thread.sleep();在do while循环中,提示告诉我,“在循环中调用Thread.sleep会导致性能问题。”我从很多其他网站和书籍中听到过这个。我可以使用什么呢?

以下是代码:

import javax.swing.*;

public class Delay {

    public static void main(String[] args) throws Exception {
        int difficulty;
        difficulty = Integer.parseInt(JOptionPane
                .showInputDialog("How good are you?\n" + "1 = evil genius...\n"
                        + "10 = evil, but not a genius"));
        boolean cont;
        do {
            cont = false;
            System.out.println("12");
            Thread.sleep(500);

            String again = JOptionPane.showInputDialog("Play Again?");
            if (again.equals("yes"))
                cont = true;
        } while (cont);
    }
}

2 个答案:

答案 0 :(得分:1)

尝试java.util.Timer和/或javax.swing.Timer。与他们一起玩,设置初始延迟,重复周期等。看看哪些适合您的需要。

请务必检查这两个计时器之间的差异,初学者请看一下这个问题:Why are there two Timer classes in Java(one under javax.swing, one under java.util )?

然后按照@BoristheSpider建议的那样尝试ScheduledExecutorService

答案 1 :(得分:-1)

使用Thread.sleep进行轮询或类似的更新机制是可行的方法。例如,如果你想每5毫秒重新绘制一个画布,那么就可以使用sleep(5)。您还可以使用更精确的硬件计时器并减轻CPU的负担,但通常的方法是Thread.sleep