2

好吧,标题说明了一切:如果你returnrun()实现的方法中使用 from会发生什么Runnable?它会Thread死吗?

4

5 回答 5

5

是的,但你不能返回任何值,因为run它是一种void类型。

例子

使用 Return 结束线程

public void run()
{
     while(true)
     {
          return;
          // This is fine, and will stop the thread.
     }
}
于 2013-05-31T16:40:58.673 回答
3

是的。

当您从 run() 方法返回时,线程会终止 - 但对象会一直存在,直到它变得无法访问。

请参阅这篇关于线程生命周期的文章。

另请参阅相关问题。

于 2013-05-31T16:45:01.323 回答
2

这取决于。

如果您使用该 Runnable 创建并启动了一个线程,那么 return 语句将导致线程终止。它不会导致线程立即终止。例如,任何封闭的 finally 块仍然被执行。

new Thread( myRunnable ).start()

但是,在其他情况下,Runnable 中的 return 语句不会导致当前线程终止。

例如,您也可以直接调用 Runnable。幸运的是,run() 方法的返回不会杀死调用者的线程。

myRunnable.run();

并且你可以将一个 Runnable 放入一个 ThreadPoolExecutor 中,它可以在一个线程上运行多个 Runnable。这些 Runnable 中的 return 语句不会导致重复使用的线程终止。

executorService.submit( myRunnable );
executorService.submit( myOtherRunnable );
于 2013-05-31T16:47:04.613 回答
2

如果你return在你的可运行文件中添加一个语句,线程就会死掉,不会再发生任何事情了。

如果您需要在线程完成后执行诸如返回值之类的操作,请查看Callable

它可以返回一个线程完成时返回的未来对象。

于 2013-05-31T16:42:35.907 回答
1

它将停止执行,如果没有其他对 Thread 对象的引用,它将最终被垃圾收集。

于 2013-05-31T16:41:42.157 回答