Java 线程休眠与输出交替问题分析
Java 线程休眠与输出交替问题分析
这段代码使用 Thread.sleep(5) 方法让线程休眠 5 毫秒,并在循环中打印数字 i 和字符串 'The thread sleeps 5 ms'。然而,在实际输出中,数字 i 和 'The thread sleeps 5 ms' 交替出现,而不是连续打印。
这是因为 'The thread sleeps 5 ms' 语句被放在了 Thread.sleep(5) 之后,每次循环时,代码执行顺序如下:
- 打印数字
i - 线程休眠 5 毫秒
- 打印 'The thread sleeps 5 ms'
因此,数字 i 和 'The thread sleeps 5 ms' 交替输出,导致输出结果并非预期中的连续打印。
解决方法:
若想要连续打印,可以将 'The thread sleeps 5 ms' 语句放在 Thread.sleep(5) 之前。
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('The thread sleeps 5 ms\n');
System.out.print(i);
try {
Thread.sleep(5);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
SleepyCounter.start();
}
}
通过将打印语句调整位置,即可实现连续输出,解决输出交替问题。
原文地址: http://www.cveoy.top/t/topic/pjem 著作权归作者所有。请勿转载和采集!