Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 线程和可运行_Java_Multithreading - Fatal编程技术网

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服务器的东西


此外,使
可运行
更易于测试,而且它使您能够灵活地运行您的东西,而无需使用线程或执行器框架。

正是如此。引用的语句不是无条件真实的,所以接受它作为真实,然后想知道为什么
线程
类设计没有遵循它是有点误导。你是对的。但是您经常会看到
线程
被子类化,而不是单独实现
运行
?顺便问一下,如果我想更改
字符串
的行为,我该怎么办?不,先生。这是错误的逻辑。这如何回答我的问题。您似乎只支持可运行接口。延长线程怎么样?是的,因为这是正确的做法!仅当您想专门研究其行为时才扩展线程。可能的重复