2014-02-26 20 views
3

我想知道如果Java主要方法是一個線程或不。我注意到,如果主方法返回,所有線程都被終止。你能解釋我爲什麼發生這種情況嗎? 預先感謝您。是java的主要方法一個線程?

+0

「如果主要方法返回,所有線程都被終止」......我沒有觀察到這種行爲。 – ajb

回答

1

當您啓動您的應用程序時,操作系統爲您創建一個主線程(或其他上下文中的UI線程)的線程。

此線程只運行您的main方法並停止。 無論如何,有兩種類型的線程。

  • 用戶線程
  • 守護線程

main threadUser thread。 當所有用戶線程完成時,JVM將停止。

嗯,這只是一個「快速反應」我很漂亮使用你可以找到更好的專家在這裏回答。

+0

不,你的回答非常好,尤其是當你指出程序不僅僅因爲主線程結束而結束時,而且僅在非守護線程的_all_結束時。 –

3

其實主要方法在主線程上運行! main threads invokes your main()

Java應用程序的所有其他線程都是從這個線程產生的!

0

是的,main方法在主線程上運行。但它仍然像其他任何用戶線程一樣。

還有守護程序線程,當所有其他用戶線程停止運行時,它們都會停止。

主線程還負責產生程序員在其程序中創建的其他線程,從而產生其他線程等。

而不是當主要方法返回所有線程時被殺死。一個原因可能是因爲main是一個無效方法,並且它不能返回任何東西。 :D

但是,如果您產生一個或多個長時間運行的用戶線程,並且您的main方法中不使用join()方法,那麼即使主方法結束,其他線程仍然存在運行,如果他們的run()方法沒有停止執行。

相關問題