gpt4 book ai didi

java - 将 Runnable 对象传递给扩展 Thread 类的类,然后启动它会打印意外结果

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

我从我的一位 friend 那里听说了一个面试问题。

当我们将 Runnable 对象传递给扩展 Thread 类的类的对象并启动该类时会发生什么。

public class A extends Thread {

Runnable obj;

public A(Runnable obj) {
this.obj=obj;
}

public void run() {
System.out.println("Printing A")
}
}



public class B implements Runnable {

public void run() {
System.out.println("Printing B");
}
}


public class MainApp {
public static void main() {
B b = new B();
A a = new A(b);
a.start();
}
}

现在输出Printing A

我期待着 打印 B 因为它是对

的完美类比
Thread obj = new Thread(Runnable runnableObj)

谁能给我解释一下这个奇怪的输出??

最佳答案

Thread 有一个run 方法,它本质上调用了runnable.run()。除了在您的类 A 中,您已经重写了该方法以执行其他操作。

所以 runnable.run() 不再被调用...

关于java - 将 Runnable 对象传递给扩展 Thread 类的类,然后启动它会打印意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30303340/

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