java - 两行代码的功能

标签 java multithreading

我正在学习 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/

相关文章:

java - 是否可以在 Intellij 中自动完成构建器?

python - 池模块和漂亮的汤出现奇怪的错误 : Invalid URL 'h'

java - 为什么我从这个 Java 程序中得到以下输出?

java - 游戏循环-线程

java - 汇流插件

java - 使用 Java 注释处理器查找注释方法的方法参数?

java - Asterisk-Java 以编程方式定义 Asterisk 版本

java - FXML JAVAFX 中的 ActionHandler 错误

C# - 线程中止和 System.NullReferenceException

c++ - 在 main() 之外初始化 std::vector 会导致性能下降(多线程)