java - 我应该创建一个新线程作为扩展 Thread 的类,还是只进行一个新的 Thread 对象实例化?

标签 java multithreading declaration

我刚刚发现我可以用一个简单的方法创建一个新线程

Thread myThread = new Thread() { 
   public void run() {}
}

但是大多数书籍建议我创建一个扩展 Thread 的类,当我可以直接实例化 Thread 类时,这对我来说似乎有点太多了。我声明新线程而不是创建新类的方式有什么问题吗?

最佳答案

我建议根本不要扩展Thread本身。相反,使用接受 RunnableThread 重载:

Thread thread = new Thread(new Runnable() {
    @Override public void run() {
        ...
    }
});

您并没有真正改变Thread的行为 - 只是给它一些运行代码。上面的代码比子类化 Thread 更清楚地体现了这一点。

请注意,您还应该考虑使用 ExecutorService 而不是直接创建线程。这是创建 Runnable 的另一个好处 - 然后您可以灵活地将其传递给 Thread 构造函数或使用 ExecutorService ......您可以抽象出Runnable创建代码,然后使用您想要的任何方法。

关于java - 我应该创建一个新线程作为扩展 Thread 的类,还是只进行一个新的 Thread 对象实例化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25653910/

相关文章:

java - 如何在两个for循环中分别使用postDelayed或sleep两次

java - 连接到所有其他线程时循环不会终止

c++ - 与使用声明在 GCC 中编译但在 MSVS 中编译的范围相同的类声明

java - 使用 ActionBar 导航返回上一个 Activity

java - 后台服务占用太多内存

java - 使用构造函数创建新对象

ios - 如何在后台线程中准备UI?

node.js - 如何为具有构造函数的外部 commonjs 模块编写 TypeScript 声明文件?

c++ - 检测 typedef 的等价性

java - IDEA Java swing GUI 形式 Jtable。表模型被自动生成的代码覆盖