在run()方法中使用return时会发生什么?

时间:2013-05-31 16:39:57

标签: java multithreading runnable

好吧,标题说明了一切:如果您在return实施的run()方法中使用Runnable会怎样?会不会导致Thread死亡?

5 个答案:

答案 0 :(得分:6)

是的,但您无法返回任何值,因为runvoid类型。

示例

使用Return来结束主题

public void run()
{
     while(true)
     {
          return;
          // This is fine, and will stop the thread.
     }
}

答案 1 :(得分:3)

当你从run()方法返回时,线程会死掉 - 但是对象会一直存在,直到它无法访问。

有关线程的生命周期,请参阅此article

另见this相关问题。

答案 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对象的引用,它最终将被垃圾回收。