标签:多线程
CountDownLatch,一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。public void await()
举例:
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.CountDownLatch;
public class CountDownLatchTest {
private final static SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static void main(String[] args) throws InterruptedException {
CountDownLatch latch=new CountDownLatch(2);//两个工人的协作
Worker worker1=new Worker("bao", 2000, latch);
Worker worker2=new Worker("senan", 4000, latch);
worker1.start();
worker2.start();
latch.await(); //等待所有worker完成工作
System.out.println("all work done at "+sdf.format(new Date())); }
static class Worker extends Thread{
private String workerName;
private int workTime;
private CountDownLatch latch;
public Worker(String workerName, int workTime, CountDownLatch latch){
this.workerName = workerName;
this.workTime = workTime;
this.latch = latch;
}
public void run(){
System.out.println(workerName + " start at" + sdf.format(new Date()));
try {
Thread.sleep(workTime);
} catch (InterruptedException e) {
e.printStackTrace();
}finally{
latch.countDown(); //计数器减一
}
System.out.println(workerName + " end at" + sdf.format(new Date()));
}
}
}
标签:多线程
原文地址:http://blog.csdn.net/kkgbn/article/details/45273967