我刚刚发现我可以用一个简单的创建一个新线程
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
创建代码,然后使用您想要的任何方法。