>  기사  >  Java  >  멀티 스레드 동기화 클래스 CountDownLatch에 대한 자세한 설명

멀티 스레드 동기화 클래스 CountDownLatch에 대한 자세한 설명

Y2J
Y2J원래의
2017-05-11 09:34:031802검색

이 글에서는 참고할만한 좋은 자바의 멀티스레드 동기화 클래스인 CountDownLatch 관련 지식을 주로 소개합니다. 아래 에디터로 살펴보겠습니다

멀티 스레드 개발에서는 스레드 그룹이 완료된 후 수행하려는 작업을 자주 접하게 됩니다. Java는 멀티 스레드 동기화 보조 클래스를 제공합니다. 요구 사항:

클래스의 일반적인 메서드:

그중 생성자 메서드:

CountDownLatch(int count) 매개변수 count는 일반적으로 실행될 스레드 수와 함께 할당되는 카운터입니다.

long getCount(): 현재 카운터 값을 가져옵니다.

void countDown(): 카운터 값이 0보다 크면 메서드가 호출되고 카운터 값이 1씩 감소합니다. 카운터가 0에 도달하면 모든 스레드가 해제됩니다.

void wait(): 카운터가 0으로 감소할 때까지 현재 메인 스레드를 차단하려면 이 메서드를 호출합니다.

코드 예:

스레드 클래스:

import java.util.concurrent.CountDownLatch;
public class TestThread extends Thread{
CountDownLatch cd;
String threadName;
public TestThread(CountDownLatch cd,String threadName){
 this.cd=cd;
 this.threadName=threadName;

}
@Override
public void run() {
 System.out.println(threadName+" start working...");
 dowork();
 System.out.println(threadName+" end working and exit...");
 cd.countDown();//告诉同步类完成一个线程操作完成

}
private void dowork(){
 try {
 Thread.sleep(2000);
 System.out.println(threadName+" is working...");
 } catch (InterruptedException e) {
 // TODO Auto-generated catch block
 e.printStackTrace();
 }

}

}

테스트 클래스:

import java.util.concurrent.CountDownLatch;
public class TsetCountDownLatch {

 public static void main(String[] args) {
 try {
  CountDownLatch cd = new CountDownLatch(3);// 表示一共有三个线程
  TestThread thread1 = new TestThread(cd, "thread1");
  TestThread thread2 = new TestThread(cd, "thread2");
  TestThread thread3 = new TestThread(cd, "thread3");
  thread1.start();
  thread2.start();
  thread3.start();
  cd.await();//等待所有线程完成
  System.out.println("All Thread finishd");
 } catch (InterruptedException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 }
 }
}

출력 결과:

rree

[관련 추천]

1. java 무료 동영상 튜토리얼

Geek Academy Java 동영상 튜토리얼

3. 알리바바 자바 개발 매뉴얼

위 내용은 멀티 스레드 동기화 클래스 CountDownLatch에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.