gpt4 book ai didi

java - 多线程控制台输出不同

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

刚接触多线程,我遇到了一些问题和困惑。 :)

public class NewThread implements Runnable {

Thread t;

NewThread() {
t = new Thread(this, "Demo Thread");
System.out.println("Child Thread " + t);
t.start();
}

@Override
public void run() {

try {
for (int i = 5; i > 0; i--) {
System.out.println("Child Thread: " + i);
Thread.sleep(500);
}
} catch (InterruptedException e) {
System.out.println("Child Interrupted.");
}

System.out.println("Exiting Child Thread.");
}

}

class ThreadDemo {

public static void main(String[] args) {

NewThread t = new NewThread();

try {
for (int i = 5; i > 0; i--) {
System.out.println("Main Thread: " + i);
Thread.sleep(1000);
}
} catch (InterruptedException e) {
// TODO: handle exception
System.out.println("Main Thread Interrupted.");
}

System.out.println("Main Thread Exiting.");
}

}

异常输出

enter image description here

我的输出

enter image description here

为什么我的控制台输出与预期输出不同?谢谢。

最佳答案

NewThread类中的变量t不是NewThread类型,因此它永远不会执行子线程循环。您永远不会在 NewThread 对象上调用 start(),因此您看不到其执行的任何输出是有道理的。

系统对象是静态的,由该虚拟机上执行的所有线程共享。

关于java - 多线程控制台输出不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14149954/

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