线程和Runnable

时间:2011-03-22 21:58:20

标签: java multithreading

我遇到过这样的声明:要创建一个新线程,最好使用Runnable接口而不是扩展Thread类。如果这是真的,为什么Java甚至允许我们扩展Thread类。为什么不把它final

3 个答案:

答案 0 :(得分:4)

因为你所做的事几乎肯定不是一个主题。这是一个ThingTheDoesSomeUsefulWork,你碰巧希望它在一个单独的线程上做有用的工作。假设我正在写一个每隔30秒轮询一次Web服务器的东西。 ThingThatPollsWebServer是一个线程吗?或者它只是一个轮询Web服务器的东西。

此外,使Runnable更容易测试,而且它使您可以灵活地运行您的东西而无需使用线程或使用执行程序框架。

答案 1 :(得分:1)

您可能想要更改线程的行为或添加其他功能。如果是这种情况,那么扩展Thread类是最合适的。

答案 2 :(得分:-2)

使用Threads是使用的旧方法(在java 5.0之前),以及Threads :)。看一下ExecutorService类。