CountDownlatch 실례 1

2560 단어 Java

import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;

public class CountDownLatchExample {
    public static void main(String[] args) throws InterruptedException {
        CountDownLatch latch = new CountDownLatch(5);
        Service service = new Service(latch);
        Runnable task = () -> service.exec();

        for (int i = 0; i < 5; i++) {
            Thread thread = new Thread(task);
            thread.start();
        }

        System.out.println("main thread await. ");
        latch.await();
        System.out.println("main thread finishes await. ");
    }
}

class Service {
    private CountDownLatch latch;

    public Service(CountDownLatch latch) {
        this.latch = latch;
    }

    public void exec() {
        try {
            System.out.println(Thread.currentThread().getName() + " execute task. ");
            sleep(2);
            System.out.println(Thread.currentThread().getName() + " finished task. ");
            //System.out.println(1/0);//      ,    finally{}    , finally{}         
        } finally {
            latch.countDown();
            System.out.println(latch.getCount());
        }
        //System.out.println(111111111);//try              ,       
    }

    private void sleep(int seconds) {
        try {
            TimeUnit.SECONDS.sleep(seconds);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}


출력:
Thread-0 execute task.  main thread await.  Thread-1 execute task.  Thread-3 execute task.  Thread-2 execute task.  Thread-4 execute task.  Thread-0 finished task.  4 Thread-1 finished task.  3 Thread-3 finished task.  2 Thread-4 finished task.  Thread-2 finished task.  1 0 main thread finishes await. 
        Countdown Latch 에 서 는 countdown 이 꼴찌 라 는 뜻 이 고, latch 는 빗장 이라는 뜻 이다.전체적인 의 미 는 역수 의 빗장 으로 이해 할 수 있 는데 약간 '3, 2, 1, 참깨 가 문 을 여 는 것' 같은 느낌 이 든다.Countdown Latch 의 역할 도 마찬가지 입 니 다. Countdown Latch 를 구성 할 때 하나의 정수 n 을 입력 해 야 합 니 다. 이 정수 '카운트다운' 이 0 이 되 기 전에 메 인 스 레 드 는 문 앞에서 기 다 려 야 합 니 다. 이 '카운트다운' 과정 은 각 실행 스 레 드 에 의 해 작 동 되 고 모든 스 레 드 는 하나의 작업 '카운트다운' 을 한 번 수행 해 야 합 니 다.총괄 적 으로 말 하면 Countdown Latch 의 역할 은 다른 라인 이 모두 임 무 를 수행 할 때 까지 기다 리 는 것 이다. 필요 할 때 각 임무 의 집행 결 과 를 종합 한 다음 에 메 인 라인 이 계속 아래로 실행 된다.
참고:https://www.jianshu.com/p/128476015902
 
CountDownlatch 실례 2
 CountDownlatch 실례 1
 CyclicBarrier 실례 2
CyclicBarrier 실례 1
Cyclic Barrier 와 Count Downlatch 의 차이 점

좋은 웹페이지 즐겨찾기