我试图运行以下几个线程:
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/