Die Verwendung von CountDownLatch --- Schwert zur Welt

 
Erklären Sie: Das
 
erste, was Sie wissen müssen, ist, dass die von dieser Klasse bereitgestellte Funktion lautet:
Wenn die Anzahl der Zähler nicht 0 ist und sich der Thread im Wartezustand befindet, um an der Barriere zu warten, lesen Sie den folgenden Code für Details. Wenn er 0 ist, fahren Sie fort.
Insbesondere wird die Demo mit den Methoden await und countDown ausgeführt
 
: Die Anzahl ist nicht 0, und der Thread ist blockiert.

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();
    }
}

Veröffentlicht 475 Originalartikel · Gefällt mir 16 · Besuche 30.000+

Ich denke du magst

Origin blog.csdn.net/qq_32370913/article/details/105578162
Empfohlen
Rangfolge