我的導師告訴我主線程是每個線程的父線程,但他無法解釋爲什麼。Java中main()方法和主線程之間的關係是什麼?
當我寫一個簡單的程序:
Class A{}
然後在執行時,它拋出一個異常:
java.lang.NoSuchMethodError: main Exception in thread "main"
是否有該main()
方法和主線程之間的關係?
我的導師告訴我主線程是每個線程的父線程,但他無法解釋爲什麼。Java中main()方法和主線程之間的關係是什麼?
當我寫一個簡單的程序:
Class A{}
然後在執行時,它拋出一個異常:
java.lang.NoSuchMethodError: main Exception in thread "main"
是否有該main()
方法和主線程之間的關係?
main()方法和主線程之間是否有任何關係?
當JVM啓動時,它創建一個名爲「Main」的線程。除非您自己創建其他線程,否則您的程序將在此線程上運行。
「主」線程所做的第一件事就是查找static void main(String[] argv)
方法並調用它。這是您程序的入口點。
如果你想讓事情「同時」發生,你可以創建多個線程,並給每個東西執行。然後他們將繼續同時做這些事情。 JVM還爲後臺工作創建了一些內部線程,例如垃圾收集。
如果「_Main_」線程做的第一件事是搜索'static void main(String args [])'那麼怎麼來**靜態塊**先運行。 –
這就是類加載的工作原理。嘗試在新類上調用一個方法,它將加載該類並初始化它(包括運行靜態初始化塊)。那裏沒有什麼特別的「主要」。 – Thilo
@java_begin - 如果沒有主要方法,則無法運行該程序,因此無法執行靜態程序。 –
首先Main Thread is a parent thread of every thread
不明確。與Process
不同,在Java線程中沒有父母和孩子的概念。你有ThreadGroups
來分組線程,然後有子組,但它不同於Process
在某種意義上說,如果父母死了,孩子仍然存在。
main
線程是啓動程序的線程,或者只是運行您的public static void main(String... args)
方法的線程。
您的導師是錯誤的。 Java線程之間沒有父子關係。 – EJP
當然,線程main是應用程序的開始,JVM創建一個[thread(main)](http://www.codeproject.com/Articles/616109/Java-Thread-Tutorial#maintr)並調用靜態main class by it – 2013-07-16 06:10:01
@EJP:「錯」是苛刻的。雖然線程不承載這種關係,但可以說所有用戶線程都是從主線程產生(直接或間接)。 – Thilo