Countdown Latch 의 원리
7813 단어 스 레 드자바병렬 프로 그래 밍다 중 스 레 드
await():현재 스 레 드 를 막 고 현재 스 레 드 를 AQS 의 차단 대기 열 에 추가 합 니 다.countDown():카운터 에 대해 체감 작업 을 합 니 다.카운터 가 0 으로 줄 어 들 면 현재 스 레 드 는 차단 대기 열 에 있 는 모든 스 레 드 를 깨 웁 니 다.
package com.example.demo.concurrent;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class CountDownLatchDemo implements Runnable{
final static CountDownLatchDemo demo =new CountDownLatchDemo();
// AQS , 5 AQS state
final static CountDownLatch latch=new CountDownLatch(5);
@Override
public void run() {
try {
Thread.sleep(100);
System.out.println("finish one task");
// CountDownLatch , 1
//AQS release , state 1 , state=0 , , AQS 。
latch.countDown();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
ExecutorService pools = Executors.newFixedThreadPool(5);
for (int i=0;i<5;i++){
pools.execute(demo);
}
try {
// , AQS , ;
// , 5 , , ;
latch.await();
System.out.println("finish All");
} catch (InterruptedException e) {
e.printStackTrace();
}
pools.shutdown();
}
}
:
finish one task
finish one task
finish one task
finish one task
finish one task
finish All
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
복잡 한 생산자 소비자 - pthread기초 지식 사고 정리http://blog.csdn.net/aganlengzi/article/details/51416461 [1] http://www.cnblogs.com/clover-toeic/p/4029269.ht...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.