ジャワのisAlive()と()の使用に参加

前述したように、あなたは通常、メインスレッドが最終的に終了します。前の例では、これはメインスレッドの終了前に、そのすべての子スレッドを確保するのに十分な長さの遅延の後、達成するために(、)(メインで)睡眠を呼び出すことによって行われます。別のスレッドへの1つのスレッドが終了したどのように私は知っていますか:しかし、これはそれにも大きな問題をもたらし、満足のいく解決策ではないでしょうか?幸い、Threadクラスは、この問題に対する答えを提供します。

スレッドが終了したかどうかを判断するには、2つの方法があります。まず、あなたがスレッドでのisAlive()を呼び出すことができます。この方法は、スレッドによって定義され、そのような一般的な形式は次のとおり
最終ブールのisAlive()

呼び出し元のスレッドがまだ実行されている場合はfalseではないが返された場合、のisAlive()メソッドは、trueを返します。しかし、のisAlive()はほとんど使用されません、より一般的な方法は次のように説明し、)(参加待機中のスレッドの終了を呼び出すことです:
ファイナル参加無効()例外:InterruptedExceptionがスローされます

このメソッドは、呼び出し元のスレッドの終了を待ちます。名前は、指定されたスレッドのエンゲージメントまで待機する要件コンセプトのスレッドから来ています。参加()指定されたスレッドの終了を待つ追加のフォームが最大時間を定義することができます。ここで、前の例の改良版です。メインスレッドが最終的に終了したことを確認するために()に参加を使用します。同様に、それはまたのisAlive()メソッドを示しています。
。スレッドが終了するのを待つために)(//参加使って
クラスを実装したRunnable {newthread
の//スレッド名;文字列名
スレッドT;
newthread(文字列のthreadName){
名前=のthreadName;
; Tは、スレッドの新しい(これ、名前)新しい=
システム.out.println( "新しいスレッド:" + T);
t.start(); //スレッドを起動
}
//これは、スレッドのエントリをポイントです。
公共ボイドRUN(){
試み{
(私は= int型のために5。 ; I> 0; I-){
System.out.printlnは(名+ ":" + I)
のThread.sleep(1000);
}
}キャッチ(InterruptedExceptionあるE){
System.out.println(名前+」中断。」);
}
のSystem.out.println(名+」出ます。」);
}
}

クラスDemoJoin {
公共の静的な無効メイン(文字列引数[]){
NewThread OB1 =新しいNewThread(「1」)。
NewThread OB2 =新NewThread(「二」);
NewThread OB3 =新NewThread(「三」);
System.out.println(「スレッドの一つが生きている:「+ ob1.t.isAlive());
System.out.println(「スレッド2つは生きている:「+ ob2.t.isAlive());
System.out.printlnは(「スリーが生きているスレッド:「+ ob3.t.isAlive());
スレッドが終了するのを待つ//
{してみてください
(「スレッドが終了するのを待っている」)するSystem.out.printlnを。
ob1.t.join();
ob2.t.join();
ob3.t.join();
}キャッチ(InterruptedExceptionある電子){
するSystem.out.println(「メインスレッドが中断」)。
}
System.out.println(「スレッドの一つが生きている:「+ ob1.t.isAlive());
System.out.println(「スレッド2つは生きている:「+ ob2.t.isAlive());
System.out.printlnは(「スリーが生きているスレッド:「+ ob3.t.isAlive());
System.out.println(「メインスレッドが終了します。」);
}
}

程序输出如下所示:
新しいスレッド:スレッド[ワン、5、メイン]新しいスレッド:スレッド[二、5は、メイン]新しいスレッド:スレッド[三、5は、メイン]スレッド一つは生きている:本当の
スレッド2つは生きています:真の
スレッドスリーは生きている:真
のスレッドが終了するのを待っています。
一つ:5
2:5
3:5
つ:4
2:4
3:4
つ:3
2:3
3:3
つ:2
2:2
3:2
つ:1
2:1
3:1
つ出ます。
三つの出。
出一つ。
スレッド一つは生きている:偽
スレッド二つは生きている:偽
スレッドスリーが生きている:偽の
メインスレッドが終了します。

あなたが見ることができるように、()を返すに参加呼び出し、スレッドが終了しました。

1 スレッドの概念
2. Javaのスレッドモデル
3. メインスレッド
4. スレッド作成
5. マルチスレッド作成
6 ()の使用のisAlive()をし、参加
7 スレッド優先
8 スレッド同期
9 スレッド間通信
10。スレッドのデッドロック
11. スレッドは、一時停止、再開、および終了します

おすすめ

転載: blog.csdn.net/Javaxuxuexi/article/details/92716537