Какова связь между методом main() и основным потоком в Java?
Мой преподаватель сказал мне, что основной поток является родительским потоком каждого потока, но он не может объяснить, почему.
Когда я пишу простую программу:
Class A{}
Затем он во время выполнения выдает исключение:
java.lang.NoSuchMethodError: main Exception in thread "main"
Существует ли какое-либо отношение между методом main()
и основным потоком?
Ответы
Ответ 1
Есть ли связь между методом main() и Main Thread?
При запуске JVM создается поток с именем "Main". Ваша программа будет работать в этом потоке, если вы сами не создадите дополнительные потоки.
Первое, что делает "Основной" поток, - это искать ваш метод static void main(String[] argv)
и вызывать его. Это точка входа в вашу программу.
Если вы хотите, чтобы все произошло "одновременно", вы можете создать несколько потоков и дать каждому что-то выполнить. Затем они будут продолжать делать это одновременно. JVM также создает некоторые внутренние потоки для фоновой работы, такие как сбор мусора.
Ответ 2
Во-первых, Main Thread is a parent thread of every thread
является неоднозначным. В отличие от Process
, в потоках Java нет понятия родительского и дочернего. У вас есть ThreadGroups
для группировки потоков, а затем есть дочерние группы, но он отличается от Process
в том смысле, что если родитель умирает, ребенок все еще остается.
Нить main
- это поток, который запускает вашу программу, или просто запускает ваш метод public static void main(String... args)
.