ホームページ  >  記事  >  Java  >  マルチスレッド同期クラスCountDownLatchの詳細説明

マルチスレッド同期クラスCountDownLatchの詳細説明

Y2J
Y2Jオリジナル
2017-05-11 09:34:031877ブラウズ

この記事では、Java のマルチスレッド同期クラス CountDownLatch に関する参考価値の高い関連知識を主に紹介します。以下のエディターで見てみましょう

マルチスレッド開発では、スレッドのグループが完了した後に実行されることを期待する操作に遭遇することがよくあります。Java は、そのようなニーズを満たすことができるマルチスレッド同期補助クラスを提供します。クラス内の共通メソッド:

その中で、

構築メソッド

: CountDownLatch(int count) パラメータ count はカウンタであり、通常、実行されるスレッドの数が割り当てられます。

long getCount(): 現在のカウンター値を取得します。

void countDown(): カウンタ値が 0 より大きい場合、メソッドが呼び出され、カウンタ値が 1 減ります。カウンタが 0 に達すると、すべてのスレッドが解放されます。

void await(): カウンタがゼロになるまで現在のメインスレッドをブロックするようにこのメソッドを調整します。

コード例:

スレッドクラス:

import java.util.concurrent.CountDownLatch;
public class TestThread extends Thread{
CountDownLatch cd;
String threadName;
public TestThread(CountDownLatch cd,String threadName){
 this.cd=cd;
 this.threadName=threadName;

}
@Override
public void run() {
 System.out.println(threadName+" start working...");
 dowork();
 System.out.println(threadName+" end working and exit...");
 cd.countDown();//告诉同步类完成一个线程操作完成

}
private void dowork(){
 try {
 Thread.sleep(2000);
 System.out.println(threadName+" is working...");
 } catch (InterruptedException e) {
 // TODO Auto-generated catch block
 e.printStackTrace();
 }

}

}

テストクラス:

import java.util.concurrent.CountDownLatch;
public class TsetCountDownLatch {

 public static void main(String[] args) {
 try {
  CountDownLatch cd = new CountDownLatch(3);// 表示一共有三个线程
  TestThread thread1 = new TestThread(cd, "thread1");
  TestThread thread2 = new TestThread(cd, "thread2");
  TestThread thread3 = new TestThread(cd, "thread3");
  thread1.start();
  thread2.start();
  thread3.start();
  cd.await();//等待所有线程完成
  System.out.println("All Thread finishd");
 } catch (InterruptedException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 }
 }
}
出力結果:

 thread1 start working...
 thread2 start working...
 thread3 start working...
 thread2 is working...
 thread2 end working and exit...
 thread1 is working...
 thread3 is working...
 thread3 end working and exit...
 thread1 end working and exit...
 All Thread finishd

【関連推奨事項】

1.

Java無料ビデオチュートリアル

2.

オタクアカデミーJava ビデオ チュートリアル

3.

Alibaba Java 開発マニュアル

以上がマルチスレッド同期クラスCountDownLatchの詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。