我看到过这样的说法,创建新线程最好使用Runnable
接口而不是扩展Thread
类。如果这是真的,那么为什么Java还允许我们扩展Thread
类呢?为什么不将其设置为final
?
我看到过这样的说法,创建新线程最好使用Runnable
接口而不是扩展Thread
类。如果这是真的,那么为什么Java还允许我们扩展Thread
类呢?为什么不将其设置为final
?
ThingTheDoesSomeUsefulWork
,你碰巧希望它在单独的线程上执行这些有用的工作。假设我正在编写一个每30秒轮询Web服务器的程序。 ThingThatPollsWebServer
是一个线程吗?还是仅仅是一个轮询Web服务器的东西。Runnable
可以更容易地进行测试,并且使您能够灵活地在不使用线程或使用执行器框架的情况下运行您的应用程序。你可能想要改变线程的行为或添加额外的功能。如果是这种情况,那么扩展Thread类是最合适的。
Thread
类的设计没有遵循它是有些误导的。 - ericksonThread
被子类化并不仅仅是为了实现 run
方法? - user381105Class
或者 String
的行为应该怎么做呢?不,先生。那是错误的逻辑。 - user381105使用线程是旧的方式(在Java 5.0之前)使用线程:)。看一下ExecutorService类。