1

每当我使用 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);
    }
}
4

2 回答 2

1

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

一定要检查这两个定时器之间的区别,对于初学者来说,看看这个问题:为什么 Java 中有两个 Timer 类(一个在 javax.swing 下,一个在 java.util 下)?

然后尝试ScheduledExecutorService,正如@BoristheSpider 所建议的那样。

于 2013-10-07T09:56:20.990 回答
-1

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

于 2013-10-06T22:04:10.133 回答