이 글에서는 참고할만한 좋은 자바의 멀티스레드 동기화 클래스인 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[관련 추천]
위 내용은 멀티 스레드 동기화 클래스 CountDownLatch에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!