자바 다 중 스 레 드 구성 요소 1:CountDownlatch 사용 방법 에 대한 요약
다음은 이 점 을 설명 할 수 있 는 간단 한 예 가 있다.
public class CountDownLatchDemo {
public static void main(String[] args) {
/*
* CountDownLatch's parameter will decide whether to print waiting
* information
* if parameter >10 will never can't to execute finished information
* if parameter==0 , don't need to waiting call working()
*/
//in think in java construct parameter is 100, will lead to never print waiting finished information
CountDownLatch latch = new CountDownLatch(10);
ExecutorService es = Executors.newCachedThreadPool();
for (int i = 0; i < 10; i++) {
es.execute(new WaitingTask(latch));
}
for (int i = 0; i < 10; i++) {
es.execute(new WokingTask(latch));
}
es.shutdown();
System.out.println("Existing");
}
}
class WokingTask implements Runnable {
private static int count = 0;
private int id = count++;
private final CountDownLatch latch;
public WokingTask(CountDownLatch latch) {
this.latch = latch;
}
public String toString() {
return "working:" + id;
}
public void run() {
try {
working();
latch.countDown();
} catch (Exception ex) {
ex.printStackTrace();
}
}
public void working() {
System.out.println(this + "working");
try {
TimeUnit.MILLISECONDS.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
class WaitingTask implements Runnable {
private static int count = 0;
private int id = count++;
private final CountDownLatch latch;
public WaitingTask(CountDownLatch latch) {
this.latch = latch;
}
public String toString() {
return "waiting:" + id;
}
public void run() {
try {
latch.await();
System.out.println(this + " waiting finished....");
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.