Javaプログラムが始まると、スレッドは通常、プログラムのメインスレッドと呼ばれます。メインスレッドの重要性は、2つの側面に反映されています。
メインスレッドは、プログラムの開始時に自動的に作成されますが、スレッドオブジェクトによって制御できます。これを行うには、Method currentThread()を呼び出して、スレッドクラスのpublic staticメンバーである参照を取得する必要があります。その通常のフォームは次のとおりです。
静的スレッドcurrentThread()
このメソッドは、それを呼んだスレッドへの参照を返します。メインスレッドへの参照を取得したら、他のスレッドを制御するために行うようにメインスレッドを制御できます。
次の例を確認することから始めましょう。
//メインスレッドの制御currentthreaddemo {public static void main(String args []){thread.currentthread();スレッドT.SetName( "My Thread"); .println(n);このプログラムでは、現在のスレッド(またはメインスレッド)への参照は、ローカル変数tに保存されているcurrentThread()を呼び出すことによって取得されます。プログラムは、スレッドの情報を表示します。次に、プログラムはSetName()を呼び出してスレッドの内部名を変更します。スレッド情報が再び表示されます。その後、サイクル数は5から減少し始め、毎回1秒間一時停止します。一時停止は、Sleep()メソッドによって行われます。 Sleep()ステートメントは、遅延時間が1ミリ秒であることを明確に規定しています。ループの外側のトライ/キャッチブロックに注意してください。
スレッドクラスのsleep()メソッドは、中断されたexceptionの例外を引き起こす可能性があります。この状況は、他のスレッドが睡眠スレッドを乱したいときに発生します。この例は、それが中断されたかどうかに単にメッセージを印刷します。実際のプログラムでは、そのような問題に対処するのに柔軟に対処する必要があります。このプログラムの出力は次のとおりです。
現在のスレッド:スレッド[メイン、5、メイン]名前の変更後:スレッド[私のスレッド、5、メイン] 54321
Tは、ステートメントprintln()でパラメーターが使用されるときに出力として使用されることに注意してください。表示順序:スレッド名、優先度、およびグループ名。デフォルトでは、メインスレッドの名前がメインです。その優先順位は5で、これもデフォルト値であり、メインはそれが属するスレッドグループの名前でもあります。スレッドグループは、セット全体としてスレッドの状態を制御するデータ構造です。このプロセスは独自のランタイム環境によって処理されるため、ここでは詳細については説明しません。スレッド名が変更された後、Tは再び出力されます。今回は、新しいスレッド名が表示されます。
プログラムのスレッドクラスによって定義された方法をより注意深く研究しましょう。 Sleep()メソッドは、ミリ秒時間に応じてスレッドが中断するように呼び出されることを示しています。その通常のフォームは次のとおりです。
静的ボイドスリープ(長い百万秒)は、中断されたエクセプトを投げます
ハングする時間は、ミリ秒として明確に定義されています。この方法では、中断されたエクセプトの例外がスローされる場合があります。
Sleep()メソッドには2番目の形式があります。これには、時間がミリ秒かナノ秒がサイクルとしてあるかを指定できます。
静的ボイドスリープ(長い数百万秒、intナノ秒)は、中断されたexceptionを投げます
2番目のフォームは、ナノ秒で期間が許可されている場合にのみ使用できます。上記のプログラムに示すように、setName()を使用してスレッド名を設定し、getName()を使用してスレッド名を取得できます(このプロセスはプログラムに反映されていません)。これらの方法はスレッドクラスのメンバーであり、次のように宣言されています。
final void setName(string threadname)final String getName()
ここで、ThreadNameは具体的にはスレッド名を指します。