【发布时间】:2015-10-05 13:31:51
【问题描述】:
我一直在尝试创建一种方法来重新创建 pokemon 的“滚动文本”,其中一次出现一个字母。问题在于能够创建一个足够短的计时器以使其合理。
这是我尝试过的:
public static void roll(String text) {
int i = 0;
while(i < text.length()) {
try {
Thread.sleep(200); //1000 milliseconds is one second.
} catch(InterruptedException ex) {
Thread.currentThread().interrupt();
}
System.out.print(text.charAt(i));
i++;
}
}
如果我将 Thread.sleep 中的值设置为 250 以上,这将正常工作。问题是,如果我将秒数设置为低于 250,那么它将等待整个时间长度(如果我告诉它等待 100 毫秒 100次,它会等待 10 秒),然后再输出任何内容。
我不确定这是定时器类型本身的问题,还是这里有其他问题。
【问题讨论】:
-
@jonathon 需要 1 秒还是 10 秒,因为 100 毫秒 10 次是 1000 毫秒还是 1 秒
-
对不起,我的意思是 100ms 100 次 10 秒。
-
@JonathonM 很奇怪,对我来说效果很好......
-
你应该养成正确处理中断的习惯。当一个线程被中断时,这意味着其他一些代码正在要求你停止你正在做的事情。忽略它并继续本质上会使您的代码成为流氓线程。您可以做的最好的事情是完全删除 try/catch,并将
throws InterruptedException添加到您的方法的签名中。如果你不想这样做,至少把 try/catch 放在你的循环而不是里面,所以当中断线程请求这样做时,循环就会终止。