CountDownLatch一个简单Demo

package thread;

import java.util.concurrent.CountDownLatch;

public class CountDownLatchDemo {

	public static void main(String[] args) throws InterruptedException {
		 CountDownLatch startSignal = new CountDownLatch(1);
	     CountDownLatch doneSignal = new CountDownLatch(10);

	     for (int i = 0; i < 10; ++i) // create and start threads
	       new Thread(new Worker(startSignal, doneSignal)).start();

	     startSignal.countDown();      // let all threads proceed
	     doSomethingElse1();
	     doneSignal.await();           // wait 
	     doSomethingElse2(); 
	}
	public static void  doSomethingElse1(){
		System.out.println("doing1...");
	}
	public static void  doSomethingElse2(){
		System.out.println("doing2...");
	}
}
class Worker implements Runnable {
	   private final CountDownLatch startSignal;
	   private final CountDownLatch doneSignal;
	   Worker(CountDownLatch startSignal, CountDownLatch doneSignal) {
	      this.startSignal = startSignal;
	      this.doneSignal = doneSignal;
	   }
	   public void run() {
	      try {
	        startSignal.await();
	        doWork();
	        doneSignal.countDown();
	} catch (InterruptedException ex) {} // return;
	   }

	   void doWork() { System.out.println("working......");}
	 }



你可能感兴趣的:(thread)