Qual è la relazione tra il metodo main () e il thread principale in Java?
Il mio tutor mi ha detto che il thread principale è il thread genitore di ogni thread, ma non è in grado di spiegare perché.
Quando scrivo un semplice programma:
Class A{}
Allora al momento dell'esecuzione lancia un'eccezione:
java.lang.NoSuchMethodError: main Exception in thread "main"
Esiste una relazione tra il metodo main()
e il thread principale?
2 answers
Esiste una relazione tra il metodo main() e il thread principale ?
All'avvio della JVM, crea un thread chiamato "Main". Il tuo programma verrà eseguito su questo thread, a meno che tu non crei altri thread da solo.
La prima cosa che fa il thread "Principale" è cercare il tuo metodo static void main(String[] argv)
e invocarlo. Questo è il punto di ingresso al tuo programma.
Se vuoi che le cose accadano "allo stesso tempo", puoi creare più thread e dare a ciascuno qualcosa eseguire. Continueranno quindi a fare queste cose contemporaneamente. La JVM crea anche alcuni thread interni per il lavoro in background come la garbage collection.
In primo luogo Main Thread is a parent thread of every thread
è ambiguo. A differenza di Process
, nei thread Java non esiste il concetto di genitore e figlio. Hai ThreadGroups
per raggruppare i thread e quindi avere gruppi figlio, ma è diverso da Process
nel senso che se il genitore muore, il bambino rimane ancora.
Il thread main
è il thread che avvia il programma o semplicemente che esegue il metodo public static void main(String... args)
.