public class CountDownLatchTest
{
public static void main(String[] args)
throws InterruptedException
{
CountDownLatch startSignal = new CountDownLatch(1000);
CountDownLatch doneSignal = new CountDownLatch(0);
for (int i = 1; i <= 1000; ++i)
{
new Thread(new Worker(startSignal, doneSignal)).start();
}
//一直等待直到所有子线程跑完自动释放
startSignal.await();
System.out.println("bb");
}
}
lass 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
{
doWork();
//一直等待
doneSignal.await();
//调用countDown方法判断子线程是否跑完
startSignal.countDown();
}
catch (InterruptedException ex)
{
}
}
/**
* 子线程所处理的工作任务
* @see [类、类#方法、类#成员]
*/
void doWork()
{
System.out.println("do .........OK");
}
}
{
public static void main(String[] args)
throws InterruptedException
{
CountDownLatch startSignal = new CountDownLatch(1000);
CountDownLatch doneSignal = new CountDownLatch(0);
for (int i = 1; i <= 1000; ++i)
{
new Thread(new Worker(startSignal, doneSignal)).start();
}
//一直等待直到所有子线程跑完自动释放
startSignal.await();
System.out.println("bb");
}
}
lass 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
{
doWork();
//一直等待
doneSignal.await();
//调用countDown方法判断子线程是否跑完
startSignal.countDown();
}
catch (InterruptedException ex)
{
}
}
/**
* 子线程所处理的工作任务
* @see [类、类#方法、类#成员]
*/
void doWork()
{
System.out.println("do .........OK");
}
}