首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Thread.sleep();

Thread.sleep();
EN

Stack Overflow用户
提问于 2013-10-06 21:47:50
回答 2查看 1.8K关注 0票数 1

每当我使用Thread.sleep();在do循环中,提示告诉我:“在循环中调用Thread.sleep会导致性能问题。”我从许多其他网站和书籍上听说过这一点。什么是我可以用的东西?

下面是代码:

代码语言:javascript
复制
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);
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-07 09:56:20

尝试java.util.Timer和/或javax.swing.Timer。和他们玩一会儿,设定初始的延迟,重复的时间等等,看看什么适合你的需要。

请务必检查这两个计时器之间的差异,首先请查看以下问题:为什么Java中有两个计时器类(一个在javax.swing下,一个在java.util下)?

然后试试ScheduledExecutorService,就像@BoristheSpider已经建议的那样。

票数 1
EN

Stack Overflow用户

发布于 2013-10-06 22:04:10

使用Thread.sleep进行轮询或类似的更新机制是可以的。例如,如果您希望每隔5毫秒重新绘制画布,则可以使用sleep(5)。您也可以使用硬件定时器,这将是更准确和减轻CPU,但通常的方法正是Thread.sleep

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19214361

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档