countdownlatch的功能是起了多个子线程,主线程等待子线程执行完毕后再去执行,具体的代码如下:
package countdownlatch;
import java.util.concurrent.CountDownLatch;
public class CountdownLatchClass {
private CountDownLatch latch = new CountDownLatch(100);
public void test(){
for(int i = 0;i<100;i++){
Thread myThread = new Thread(new MyThread());
myThread.start();
}
new DemaonThead("demaon thread...start").start();
}
public static void main(String[] args){
new CountdownLatchClass().test();
}
class MyThread implements Runnable{
@Override
public void run() {
System.out.println("thread:"+Thread.currentThread().getId()+"run.");
latch.countDown();
}
}
class DemaonThead extends Thread{
public DemaonThead(String name) {
Thread.currentThread().setName(name);
}
public void run(){
try {
latch.await();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"can run....");
}
}
}