我遇到过这样的声明:要创建一个新线程,最好使用Runnable
接口而不是扩展Thread
类。如果这是真的,为什么Java甚至允许我们扩展Thread
类。为什么不把它final
?
答案 0 :(得分:4)
因为你所做的事几乎肯定不是一个主题。这是一个ThingTheDoesSomeUsefulWork
,你碰巧希望它在一个单独的线程上做有用的工作。假设我正在写一个每隔30秒轮询一次Web服务器的东西。 ThingThatPollsWebServer
是一个线程吗?或者它只是一个轮询Web服务器的东西。
此外,使Runnable
更容易测试,而且它使您可以灵活地运行您的东西而无需使用线程或使用执行程序框架。
答案 1 :(得分:1)
您可能想要更改线程的行为或添加其他功能。如果是这种情况,那么扩展Thread类是最合适的。
答案 2 :(得分:-2)
使用Threads是使用的旧方法(在java 5.0之前),以及Threads :)。看一下ExecutorService类。