説明:
最初に知っておくべきことは、このクラスによって提供される関数が次のとおりであることです。
カウントカウントが0ではなく、スレッドがバリアで待機するために待機状態にある場合、詳細については次のコードを参照してください。0の場合は、実行を続行します。
具体的には、デモはawaitメソッドとcountDownメソッドを介して実行
されます。カウントは0ではなく、スレッドはブロックされます。
package com.zcw.demo1;
import java.util.concurrent.CountDownLatch;
/**
* @ClassName : MyService
* @Description :
* @Author : Zhaocunwei
* @Date: 2020-04-17 13:05
*/
public class MyService {
private CountDownLatch countDownLatch = new CountDownLatch(1);//创建1个技术的对象
public void testMethod(){
System.out.println("A");
try {
//当线程执行如下代码时成等待状态,程序不向下继续运行,
countDownLatch.await();
System.out.println("B");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public void downMethod(){
System.out.println("X");
//当程序执行如下代码后,计数由1变为0,以前呈等待状态的线程继续向下运行。
countDownLatch.countDown();
}
}
package com.zcw.demo1;
/**
* @ClassName : MyThread
* @Description :
* @Author : Zhaocunwei
* @Date: 2020-04-17 13:13
*/
public class MyThread extends Thread {
private MyService myService;
public MyThread(MyService myService){
super();
this.myService = myService;
}
@Override
public void run(){
myService.testMethod();
}
public static void main(String[] args) throws InterruptedException {
MyService myService = new MyService();
MyThread myThread = new MyThread(myService);
myThread.start();
Thread.sleep(2000);
myService.downMethod();
}
}