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) 之后,每次循环时,代码执行顺序如下:

  1. 打印数字 i
  2. 线程休眠 5 毫秒
  3. 打印 '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();
    }
}

通过将打印语句调整位置,即可实现连续输出,解决输出交替问题。

Java 线程休眠与输出交替问题分析

原文地址: http://www.cveoy.top/t/topic/pjem 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录