好吧,标题说明了一切:如果您在return
实施的run()
方法中使用Runnable
会怎样?会不会导致Thread
死亡?
答案 0 :(得分:6)
是的,但您无法返回任何值,因为run
是void
类型。
示例
使用Return来结束主题
public void run()
{
while(true)
{
return;
// This is fine, and will stop the thread.
}
}
答案 1 :(得分:3)
答案 2 :(得分:2)
如果你在runnable中放了一个return
语句,那么线程就会死掉,不会再发生任何事了。
如果你需要做一些事情,比如在线程完成后返回一个值,看一下Callable
它可以返回线程完成时返回的未来对象。
答案 3 :(得分:2)
取决于。
如果您使用该Runnable创建并启动了一个Thread,则返回语句将导致该线程的终止。它不会导致线程立即终止。例如,仍然执行任何封闭的finally块。
new Thread( myRunnable ).start()
但是,在其他情况下,Runnable中的return语句不会导致当前线程终止。
例如,您也可以直接调用Runnable。幸运的是,run()方法的返回不会终止调用者的线程。
myRunnable.run();
你可以将Runnable放入ThreadPoolExecutor,可以在一个线程上运行多个Runnables。这些Runnables中的返回语句不会导致重用线程的终止。
executorService.submit( myRunnable );
executorService.submit( myOtherRunnable );
答案 4 :(得分:1)
它将停止执行,如果没有其他对Thread对象的引用,它最终将被垃圾回收。