gpt4 book ai didi

java - 这个线程示例如何工作?

转载 作者:行者123 更新时间:2023-12-01 17:32:30 27 4
gpt4 key购买 nike

我想在一个类下编写多个线程,并找到了一种实现方法。

public class ThreadExample {

public static void main(String[] arg)
{

Thread one = new Thread() {
public void run() {
try {
Thread.sleep(2000);
} catch(InterruptedException e) {
e.printStackTrace();
}
System.out.println("One");
}
};

Thread two = new Thread() {
public void run() {
System.out.println("Two");
}
};

one.start();
two.start();
}
}

我不明白的是,我既没有扩展 Thread 类,也没有实现 Runnable 接口(interface)。我怎么理解这一点?如果答案是,“我只是创建 Thread 类的对象并使用它,那么为什么不总是这样做而不是执行上面提到的事情呢?

最佳答案

从技术上讲,您正在做的扩展Thread。您可以使用称为匿名内部类的东西来动态扩展它 - 要了解有关它的更多信息,请开始 here并阅读本页以及接下来的两页。

这意味着您正在创建没有名称的临时内联子类,并且其定义仅在方法完成之前保留。为什么这样做而不是创建 Thread 的命名子类或 Runnable 的实现?当 run() 的主体像上面的示例一样简单时,这是有道理的 - 需要跟踪的打字和 .java 文件更少。像这样的一次性简单任务是 Thread 匿名内部类扩展的良好候选者。对于主要的程序逻辑,您可能希望在单独的文件中执行完整的命名类实现。

此外,一旦您获得了 Thread 的良好经验,我鼓励您查看 java.util.concurrent 包。

关于java - 这个线程示例如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9612047/

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