import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors;
public class ExcetuorDemo2 { public static void main(String[] args) { ExecutorService service = Executors.newFixedThreadPool(5); CountDownLatch cdl = new CountDownLatch(5); Handler t1 = new Handler(cdl); Handler t2 = new Handler(cdl); Handler t3 = new Handler(cdl); Handler t4 = new Handler(cdl); Handler t5 = new Handler(cdl); service.execute(t1); service.execute(t2); service.execute(t3); service.execute(t4); service.execute(t5); service.shutdown(); try { cdl.await(); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("over"); } } class Handler implements Runnable { CountDownLatch cdl; public Handler(CountDownLatch cdl){ this.cdl = cdl; } @Override public void run() { for(int i=0;i<1;i++){ try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName() + " " + i); } cdl.countDown(); } }