我正在学习 Java 中的线程。我想知道下面两段代码是否相同:
class B extends Thread {
public void run() {
doSomething();
}
public void doSomething() {}
}
class A extends Thread {
public void run() {
new B().start();
}
}
第二段代码正在更改类A:
class A extends Thread {
public void run() {
new B().doSomething();
}
}
当我阅读我团队项目的代码时,我发现这个问题:一个线程调用另一个线程没有循环。
最佳答案
正如您的问题已经表明的那样,这两种情况并不相同。
假设在每种情况下我们都通过调用 new A().start()
输入代码,然后第一个示例启动一个线程 (A),该线程启动另一个调用 doSomething()
的线程 (B) .
第二种情况启动一个线程 (A),它调用 B.doSomething()
。在这种情况下,我们不会启动类型 B 的线程,因为我们从不调用 .start()
在 B 的实例上。
关于java - 两行代码的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25884964/