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



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

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

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

我建议根本不扩展Thread本身。相反,使用接受Runnable:的Thread过载

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

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

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

相关内容

最新更新