CountDownLatchの使用---世界への剣

 
説明:
 
最初に知っておくべきことは、このクラスによって提供される関数が次のとおりであることです。
カウントカウントが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();
    }
}

475のオリジナル記事を公開 16のような 30,000以上の訪問

おすすめ

転載: blog.csdn.net/qq_32370913/article/details/105578162