JUC-CountDownLatch 노트
CountDownLatch는 지정된 스레드 수량을 완성하기 전에 다른 스레드가 완성되기를 동기화하는 보조 클래스로 개인적인 느낌과 계수기의 차이가 많지 않다.
2. CountDownLatch 예
import java.util.concurrent.CountDownLatch;
/**
* Created by wuhao on 15-12-23.
*/
public class CountDownLatchDemo {
public static void main(String[] args) {
// 3,
CountDownLatch countDownLatch=new CountDownLatch(3);
WorkThread workThread1 = new WorkThread(1, 10, " ", countDownLatch);
WorkThread workThread2 = new WorkThread(2, 1, " ", countDownLatch);
WorkThread workThread3 = new WorkThread(3, 4, " ", countDownLatch);
workThread1.start();
workThread2.start();
workThread3.start();
try {
countDownLatch.await();
System.out.println("All Thread Complete: ");
} catch (InterruptedException e) {
System.out.println("countDownLatch.await() Error");
}
}
}
class WorkThread extends Thread{
private int index;
private int time;
private String name;
private CountDownLatch countDownLatch;
public WorkThread(int index, int time , String name, CountDownLatch countDownLatch) {
this.index = index;
this.time = time;
this.name = name;
this.countDownLatch = countDownLatch;
}
@Override
public void run() {
System.out.println("Thread Index: " + index + ", Name: " + name + " Start");
try {
Thread.sleep(time * 1000);
} catch (InterruptedException e) {
System.out.println("Thread.sleep(2000) Error");
}
System.out.println("Thread Index: " + index + ", Name: " + name + " End");
countDownLatch.countDown(); // -1
}
}
결과 출력:
1. 계수기 수치는 3
Thread Index: 1, Name: Start
Thread Index: 2, Name: Start
Thread Index: 3, Name: Start
Thread Index: 2, Name: End
Thread Index: 3, Name: End
Thread Index: 1, Name: End
All Thread Complete:
2. 카운터 수치는 2
Thread Index: 1, Name: Start
Thread Index: 2, Name: Start
Thread Index: 3, Name: Start
Thread Index: 2, Name: End
Thread Index: 3, Name: End
All Thread Complete:
Thread Index: 1, Name: End
3. 계수기의 수치는 4
Thread Index: 1, Name: Start
Thread Index: 2, Name: Start
Thread Index: 3, Name: Start
Thread Index: 2, Name: End
Thread Index: 3, Name: End
Thread Index: 1, Name: End
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.