java - Java线程坏了

标签 java multithreading java-threads

我试图运行以下几个线程:

Thread threadWinter = new Thread(() -> IntStream.range(1, 4).forEach((n) -> System.out.println("Winter")));
Thread threadSpring = new Thread(() -> IntStream.range(1, 4).forEach((n) -> System.out.println("Spring")));
Thread threadSummer = new Thread(() -> IntStream.range(1, 4).forEach((n) -> System.out.println("Summer")));
Thread threadAutumn = new Thread(() -> IntStream.range(1, 4).forEach((n) -> System.out.println("Autumn")));
threadWinter.start();
threadSpring.start();
threadSummer.start();
threadAutumn.start();

每个运行输出如下所示:
Spring
Spring
Spring
Summer
Summer
Summer
Winter
Winter
Winter
Autumn
Autumn
Autumn

因此,线程的输出顺序可能会有所不同,但不会混合在一起。看起来错了。什么原因可能是这种现象,以及如何解决(以随机顺序获取行)?

最佳答案

System.out基于缓冲区,它不会在每条消息上刷新流。

要弄乱它,请尝试手动冲洗它。

Thread threadWinter = new Thread(() -> IntStream.range(1, 4)
    .forEach((n) -> {
        System.out.println("Winter"); 
        System.out.flush();
    }));

关于java - Java线程坏了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61634754/

相关文章:

java - 我的手机不振动

java - Android,在方法之间传递 LinearLayout、RelativeLayout 和 TextView

python - 方法的 "self"参数是否受到某种保护?

如果实例化 Selenium WebDriver,Java 线程将失败

Java多线程:Start 2 threads, 轮流打印1-100。结果是这样的:但它没有运行

java - 如何在 Google Cloud Build 上加速 java maven 构建(100 多个依赖项)

java - 如何在 Firebase 中连接数据库条目和存储条目?

java - 不同步 Java 集合的后果

c# - C# 中的单元测试线程安全

Java函数在执行之前返回一个值