Java 线程和可运行
我遇到过这样一种说法:要创建新线程,最好使用Java 线程和可运行,java,multithreading,Java,Multithreading,我遇到过这样一种说法:要创建新线程,最好使用Runnable接口,而不是扩展thread类。如果这是真的,为什么Java甚至允许我们扩展Thread类。为什么不将其设置为最终版呢?您可能需要更改线程的行为或添加其他功能。如果是这种情况,那么扩展Thread类是最合适的。使用Threads是使用Threads的旧方法(在java 5.0之前),well Threads:)。看看类ExecutorService。因为您正在制作的东西几乎肯定不是线程。这是一个非常有用的工作,而你恰好希望它在一个单独的
Runnable
接口,而不是扩展thread
类。如果这是真的,为什么Java甚至允许我们扩展Thread
类。为什么不将其设置为最终版呢?您可能需要更改线程的行为或添加其他功能。如果是这种情况,那么扩展Thread类是最合适的。使用Threads是使用Threads的旧方法(在java 5.0之前),well Threads:)。看看类ExecutorService。因为您正在制作的东西几乎肯定不是线程。这是一个非常有用的工作,而你恰好希望它在一个单独的线程上做这些有用的工作。假设我正在写一个每30秒轮询一个web服务器的东西。ThingAtPollsWebServer
是线程吗?或者它只是一个轮询web服务器的东西
此外,使
可运行
更易于测试,而且它使您能够灵活地运行您的东西,而无需使用线程或执行器框架。正是如此。引用的语句不是无条件真实的,所以接受它作为真实,然后想知道为什么线程类设计没有遵循它是有点误导。你是对的。但是您经常会看到线程
被子类化,而不是单独实现运行
?顺便问一下,如果我想更改类
或字符串
的行为,我该怎么办?不,先生。这是错误的逻辑。这如何回答我的问题。您似乎只支持可运行接口。延长线程怎么样?是的,因为这是正确的做法!仅当您想专门研究其行为时才扩展线程。可能的重复