Java 线程睡眠:为什么看不到线程睡眠?
public class SleepyCounter { public static void main(String[] args) { Thread SleepyCounter = new Thread(new Runnable() { public void run() { for (int i = 10; i <= 500; i++) { System.out.print(i); try { Thread.sleep(5); System.out.print(' The thread sleeps 5 ms '); } catch (InterruptedException e) { e.printStackTrace(); } } } }); SleepyCounter.start(); } }
为什么没有执行睡眠内容:在这段代码中,线程会执行sleep()方法来暂停一段时间。但是由于线程立即进入循环并打印数字,所以可能会导致看起来没有执行睡眠。
这是因为在循环中,先执行了打印语句,然后才执行了sleep()方法。所以在控制台输出时,先输出数字,然后再输出睡眠提示。
如果你希望先执行睡眠,再打印数字和睡眠提示,可以将打印语句和睡眠语句的位置互换,如下所示:
Thread SleepyCounter = new Thread(new Runnable() {
public void run() {
for (int i = 10; i <= 500; i++) {
try {
Thread.sleep(5);
System.out.print(i);
System.out.print(' The thread sleeps 5 ms
');
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
这样就会先执行睡眠,再打印数字和睡眠提示。
原文地址: http://www.cveoy.top/t/topic/pjeM 著作权归作者所有。请勿转载和采集!