嗯,標題說明了一切:如果在方法中使用return
將會發生什麼?Runnable
?它會使Thread
死亡,還是不?在run()方法中使用return時會發生什麼?
回答
是的,但不能返回任何值,因爲run
是void
類型。
例
使用返回,結束線程
public void run()
{
while(true)
{
return;
// This is fine, and will stop the thread.
}
}
在這種情況下,讓OP通過反覆試驗來學習會更好:)。 –
它將停止執行,如果那裏有給Thread對象的任何其它引用它最終會被垃圾收集。
這取決於。
如果使用該Runnable創建並啓動了一個Thread,則返回語句將導致該線程的終止。它不會立即終止線程。例如,任何封閉的finally塊仍然被執行。
new Thread(myRunnable).start()
但是,在其他情況下,Runnable中的return語句不會導致當前線程終止。
例如,您也可以直接調用Runnable。幸運的是,run()方法的返回不會終止調用者的線程。
myRunnable.run();
你可以把一個Runnable成的ThreadPoolExecutor,它在單個線程可能運行多個的Runnable。這些Runnable中的Return語句不會導致重用線程的終止。
executorService.submit(myRunnable);
executorService.submit(myOtherRunnable);
返回確實使線程死於'Thread'上下文中。顯然還有其他的代碼在'Thread'內部運行,但是在問題範圍上卻並沒有誤導。重寫'Thread.run()'和'if(target!= null)target.run()'方法之間的區別非常微妙。 – Gray
@格雷 - 澄清的第一段。另外,考慮一個try/finally包含的回報。無論如何,在return語句之後,線程繼續執行finally塊。 –
不知道爲什麼有人在上面編輯之後低估了這一點。 –
- 1. 使用yield return時GetEnumerator()方法會發生什麼?
- 2. 如果我們直接調用run方法會發生什麼?
- 3. 如果我自己調用run()方法會發生什麼?
- 4. 「return Json(myObject);」後會發生什麼?
- 5. 會發生什麼使用run()而不是線程的start()?
- 6. 在ArrayDeque中同時使用push(),offer()和add()方法時會發生什麼?
- 7. 在DisplayObjectContainer上調用addChild或removeChild方法時會發生什麼?
- 8. 在Java中重寫方法時會發生什麼?
- 9. 什麼時候在javascript中使用'return'
- 10. SVN未使用時會發生什麼?
- 11. 會發生什麼事時,使用make_shared
- 12. 何時使用return,以及返回的數據會發生什麼?
- 13. 在Java中調用某個方法後會發生什麼
- 14. 在if語句中使用return時會做什麼?
- 15. Java:openGL:JOGL:當我調用display()方法時,幕後會發生什麼?
- 16. 當我們調用ArrayList.add()方法時會發生什麼?
- 17. 當java中有多個主要方法時會發生什麼?
- 18. 在flash actionscript中調用一個不存在的方法時會發生什麼?
- 19. 爲什麼不能在多線程中使用run()方法?
- 20. 發生故障時會發生什麼?
- 21. 在併發類中放入run()方法的內容是什麼?
- 22. 什麼時候會發生?
- 23. 爲什麼不能在同一個方法中使用「return」和「yield return」?
- 24. 爲什麼run方法不被調用?
- 25. 當事務方法在sqlite中使用事務調用另一個方法時會發生什麼?
- 26. 在Mockito中連續進行兩次方法調用時會發生什麼?
- 27. java-當我在構造函數中調用方法時會發生什麼?
- 28. 在return語句中解除引用的指針會發生什麼?
- 29. 在masterpage中使用radsplitter時運行webapp會發生什麼?
- 30. 當我在TimerTrigger中使用System.Threading.Timer時會發生什麼?
當你嘗試過時發生了什麼? –