好文: http://www.cnblogs.com/yezhenhan/archive/2012/01/07/2315652.html
package cn.stu;
import java.util.concurrent.CountDownLatch;
public class Worker implements Runnable{
private CountDownLatch downLatch;
public Worker(CountDownLatch downLatch){
this.downLatch = downLatch;
}
@Override
public void run() {
try {
downLatch.await();
System.out.println("开始执行....");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
package cn.stu;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/***
*
* countDown() ,调用一次减1, 但为0的时候, wait的方法就被激活了,不在阻塞了。 感觉可以用作开关左右的业务。
*
*/
public class Main {
public static void main(String[] args) throws InterruptedException{
CountDownLatch companyLatch = new CountDownLatch(1);
Worker worker = new Worker(companyLatch);
ExecutorService exec = Executors.newFixedThreadPool(1);
exec.submit(worker);
Thread.sleep(2000);
System.out.println("开始启动模式了.....");
companyLatch.countDown();
exec.shutdown();
}
}
运行结果如下:
开始启动模式了.....
开始执行....