web-dev-qa-db-ja.com

Javaのmain()メソッドとメインスレッドの関係は何ですか?

私の家庭教師は、メインスレッドはすべてのスレッドの親スレッドであると教えてくれましたが、その理由を説明することはできません。

簡単なプログラムを書くとき:

_Class A{}
_

次に、実行時に例外をスローします。

_Java.lang.NoSuchMethodError: main Exception in thread "main"
_

main()メソッドとメインスレッドの間に関係はありますか?

25
Java_begins

Main()メソッドとメインスレッドの間に関係はありますか?

JVMが起動すると、「メイン」と呼ばれるスレッドが作成されます。自分で追加のスレッドを作成しない限り、プログラムはこのスレッドで実行されます。

「メイン」スレッドが最初に行うことは、static void main(String[] argv)メソッドを探して呼び出すことです。これがプログラムへのエントリポイントです。

物事を「同時に」発生させたい場合は、複数のスレッドを作成し、それぞれに何かを実行させることができます。その後、彼らはこれらのことを同時に行い続けます。 JVMは、ガベージコレクションなどのバックグラウンド作業用の内部スレッドもいくつか作成します。

44
Thilo

まず、_Main Thread is a parent thread of every thread_はあいまいです。 Processとは異なり、Javaスレッドには、親と子の概念はありません。スレッドをグループ化してから子グループを作成するためのThreadGroupsがありますが、 Processとは異なり、親が死亡しても子は残ります。

mainスレッドは、プログラムを開始するスレッド、または単にpublic static void main(String... args)メソッドを実行するスレッドです。

10
Jatin