场景描述:
模拟10个线程,并发执行,最后汇总结果
代码:
package com.jf.service.market.impl;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class CountDownLatchTest {
public static void main(String[] args) {
int num = 10;
long time = System.currentTimeMillis();
ExecutorService cachedThreadPool = Executors.newCachedThreadPool();
final CountDownLatch latch = new CountDownLatch(num);
for (int i = 0; i < 10; i++) {
cachedThreadPool.execute(new Runnable() {
public void run() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(" End=== Thread:"+Thread.currentThread().getId());
latch.countDown();
}
});
}
try {
latch.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("总共耗时:" + (System.currentTimeMillis()-time));
cachedThreadPool.shutdown();
}
}
结果展示:
End=== Thread:10
End=== Thread:15
End=== Thread:17
End=== Thread:16
End=== Thread:14
End=== Thread:13
End=== Thread:12
End=== Thread:9
End=== Thread:11
End=== Thread:18
总共耗时:1008