场景描述:
模拟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