同期ツールのたCountDownLatchを使用

使用同期ツールが大幅にマルチスレッド操作を容易にします。1つ以上のスレッドがその実行後に、別のスレッドの実行まで待機することができますjava.util.concurrentの、下たCountDownLatch同期ツール。この要求は、基本的なスレッド間通信を使用している場合、実際に動作するにはあまりにも面倒です。使用されたCountDownLatchツールが大幅に問題のある状況でのこのタイプの効率を向上させます。

例えば、10件のスレッドが、メインスレッドは、すべての実行スレッドの前に他の9の実施後に必要とされなければならない何も操作が行われていない、結果は無秩序でなければなりません。

1つの インポートjava.util.concurrent.CountDownLatch。
2  
3  パブリック クラスCountDownLatchDemo {
 4      パブリック 静的 ボイドメイン(文字列[]引数){
 5        のためのINT iが= 0; I <9; I ++ ){
 6            新しいスレッド(() - > {
 7                のSystem.out.println(スレッド。.currentThread()のgetName()+ "运行!" );
 8                }、 "线程" + String.valueOf(I))(開始)。
9        }
 10          のSystem.out.println( "メイン线程结束!!!" )。
11      }
 12 }

 

たCountDownLatchの使用ツール、および使用方法:

1つの インポートjava.util.concurrent.CountDownLatch。
2  
3  パブリック クラスCountDownLatchDemo {
 4      パブリック 静的 ボイドメイン(文字列[]引数)がスローInterruptedExceptionある{
 5          たCountDownLatchたCountDownLatch = 新しいたCountDownLatch(9 )。
6        INT I = 0、I <9; I ++ ){
 7            新しいスレッド(() - > {
 8                のSystem.out.println(にThread.currentThread()のgetName()+。 "运行!" );
 9                たCountDownLatch。カウントダウン();
 10               } "スレッド" + String.valueOf(I))を起動();.
 11        }
 12は       CountDownLatch.await();
 13で          のSystem.out.println( "メインスレッドが終了!!!" );
 14      }
 15 }

 

 

原理:

*たCountDownLatch一件の以上のスレッドがのawaitメソッドを呼び出したときに、これらのスレッドがブロックされている二つの主な方法があります。

*その他のスレッドがカウントダウン方式は、1で対抗しますコール(コール・カウントダウン方式でスレッドをブロックしません

*カウンタの値がゼロになったときのawaitメソッドブロックのスレッドがウェイクアップされますので、引き続き

 

もっと読みます

https://www.cnblogs.com/nullzx/p/5272807.html

 

 

PS:カスタムテンプレートコードは、コードブロックは、ショートカットキーに抽出します:

https://blog.csdn.net/zhou520yue520/article/details/82713820

 

 

おすすめ

転載: www.cnblogs.com/fangtingfei/p/12021145.html