我在教自己的Java線程,我注意到一些讓我困惑的東西。我做了一個名爲engine
的課,實施Runnable
。 run方法只打印「Hello World」,睡一會兒,然後重複。爲什麼線程超過Java中的主要方法?
在我的主要方法,我有:
public static void main(String[] args) {
Thread thread = new Thread(engine);
thread.start();
System.out.println("Done.");
}
如我所料,我看到 「Hello World」 和 「完成」。印刷速度很快,這意味着主要方法已達到結束,但我沒有想到的是,即使在主結束後,我開始保持運行的線程。
爲什麼即使在主退出後程序仍繼續執行?我會認爲,當主要退出過程將終止,所有的線程將被強制清理。這是否意味着每個線程都必須顯式加入/終止Java程序才能終止?
我的猜測是程序在所有線程完成時完成。如果你的線程在一個循環中,那麼程序直到終止纔會結束。 – gsingh2011
爲了確保我不會瘋狂(我總是在不考慮C的情況下編寫連接),如果我在C程序中這樣做了,那麼它會強制終止該線程,對吧? –