好吧,标题说明了一切:如果你return
在run()
实现的方法中使用 from会发生什么Runnable
?它会Thread
死吗?
问问题
5105 次
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 回答
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 回答