gpt4 book ai didi

java - 为什么 Java 中线程是顺序运行而不是同时运行

转载 作者:行者123 更新时间:2023-12-01 07:05:12 25 4
gpt4 key购买 nike

以下代码中的线程似乎不同时运行。但是,如果我将 number 更改为 100 万或将 Thread.sleep(50); 添加到循环中,它会同时运行。使线程 hibernate 会产生同质结果,同时将 number 增加到一百万会使每个线程在切换到其他线程之前打印 50 多行。具体原因是什么?

class RunnableDemo implements Runnable {
int number = 4;
private Thread t;
private String threadName;
RunnableDemo(String name) {
threadName = name;
}

public void run() {
System.out.println("----------");
for (int i = number; i > 0; i--) {
System.out.println("Thread: " + threadName + ", " + i);
}

}

public void start() {
System.out.println("Starting " + threadName);
t = new Thread(this, threadName);
t.start();

}

}

public class Test {
public static void main(String args[]) {

RunnableDemo R1 = new RunnableDemo("Thread-1");
RunnableDemo R2 = new RunnableDemo("Thread-2");

R1.start();
R2.start();
}
}

这是当 number 为 4 时代码产生的输出:

Starting Thread-1
Starting Thread-2
----------
Thread: Thread-1, 4
Thread: Thread-1, 3
Thread: Thread-1, 2
Thread: Thread-1, 1
----------
Thread: Thread-2, 4
Thread: Thread-2, 3
Thread: Thread-2, 2
Thread: Thread-2, 1

最佳答案

System.out.println缓冲。因此,您不能使用它来测试线程同时性。

关于java - 为什么 Java 中线程是顺序运行而不是同时运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27040119/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com