繁体   English   中英

Thread.sleep(); 在Java中

[英]Thread.sleep(); in Java

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

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

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

然后尝试ScheduledExecutorService的 ,如已被@BoristheSpider建议。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM