[英]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.