CountDownLatch 멀티스레드 완료 대기

2108 단어 CountDownLatch
1: CountDownLatch CountDownLatcn 클래스는java에 있습니다.util.concurrent 패키지에서 다른 라인이 작업을 끝내기를 기다릴 수 있도록 합니다.CountDownLatch 클래스는 하나의 구조기만 제공합니다:public CountDownLatch (int count);매개 변수count는 계수기의 값으로 이해할 수 있습니다. 나머지 몇 가지 방법은 다음과 같습니다: await (): await () 방법을 호출하는 라인은 끊기고,count 값이 0이 될 때까지 기다립니다.await(long timeout, Time Unit unit): 일정 시간을 기다린 후에count 값이 0이 되지 않으면 계속 실행됩니다.countDown(): count의 값을 -1로 설정합니다.2: 예를 들어 메인 스레드 대기는 반드시 두 개의 하위 스레드가 실행된 후에야 메인 스레드가 계속 실행된다는 것을 설명한다.
public class CountDownLatchExample {
  public static void main(String[] args) {
   final CountDownLatch latch = new CountDownLatch(2);
   new Thread(new Runnable() {
     @Override
     public void run() {
     System.out.println("          :" + System.currentTimeMillis());
        try {
           Thread.sleep(1000);
          } catch (InterruptedException e) {
            e.printStackTrace();
          }
    System.out.println("          :" + System.currentTimeMillis());
        latch.countDown();  
      }
     }).start();
   new Thread(new Runnable() {
    @Override
    public void run() {
     System.out.println("          :" + System.currentTimeMillis());
        try {
          Thread.sleep(1000);
          } catch (InterruptedException e) {
           e.printStackTrace();
          }
     System.out.println("          :" + System.currentTimeMillis());
         latch.countDown();
     }
   }).start();
    try {
     latch.await();
   System.out.println("       ,     " + System.currentTimeMillis());
     } catch (InterruptedException e) {
          e.printStackTrace();
     }
   }
}
 
실행 결과는 다음과 같습니다.
            :1458950519770
            :1458950519770
            :1458950520784
            :1458950520784
         ,     1458950520784

두 개의 하위 라인이 실행이 끝났을 때main 라인이 실행되기 시작하는 것을 볼 수 있습니다.

좋은 웹페이지 즐겨찾기