この記事では、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無料ビデオチュートリアルオタクアカデミーJava ビデオ チュートリアルAlibaba Java 開発マニュアル以上がマルチスレッド同期クラスCountDownLatchの詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。