我应该创建一个新线程作为扩展Thread的类或只是做一个新的Thread对象实例化?

时间:2014-09-03 21:24:18

标签: java multithreading declaration

我刚刚发现我可以使用简单的

创建一个新线程
Thread myThread = new Thread() { 
   public void run() {}
}

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

1 个答案:

答案 0 :(得分:3)

我建议不要延长Thread本身。相反,请使用接受Thread的{​​{1}}重载:

Runnable

你并没有真正改变Thread thread = new Thread(new Runnable() { @Override public void run() { ... } }); 的行为 - 只是给它一些代码来运行。上面的代码比通过子类化Thread更清楚地表示。

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