gpt4 book ai didi

java - 带线程的小程序执行不清楚

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

我创建了一个使用线程的测试程序:

class First implements Runnable {
public void run() {
System.out.print("One ");
}
}

class Second implements Runnable {
Thread other;
Second(Thread t) {other = t;}
public void run() {
System.out.print("Two");
}
}

public class ThreadTest {
void go() {
First first = new First();
Thread t = new Thread(first);
Second second = new Second(t);
Thread u = new Thread(second);
t.start();
u.start();
}

public static void main(String[] args) {
new ThreadTest().go();
}
}

我预计它会打印:

One One

但它突然对我来说打印了:

One Two

我不明白为什么会发生这种情况。我认为在两个线程中,必须调用 First class 中的方法 run() 。因为我将第一个实例传递给线程构造函数,然后将这个创建的线程传递给第二个构造函数。因此,第一类中的方法 run() 优先于第二类中的 run() 方法。我哪里错了?

最佳答案

第二个线程没有理由打印“One”。它可能引用了第一个Thread,但它对此不执行任何操作。没有任何内容覆盖 Secondrun 方法,因此它只打印 Two

要使第二个 Thread 打印 One,请让 run 调用另一个 Thread run 方法。

class Second implements Runnable {
Thread other;
Second(Thread t) {other = t;}
public void run() {
other.run();
}
}

但是从另一个 Threadrun 方法调用一个 Threadrun 方法是不常见的。事实上,直接调用 run 根本不常见。

关于java - 带线程的小程序执行不清楚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17934203/

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