package servlet.test;
import java.util.concurrent.CountDownLatch;
public class CoundDownLatchTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
CountDownLatch countDownLatch = new CountDownLatch(3);
CustomThreadCoundDownLatch customThread = new CustomThreadCoundDownLatch(countDownLatch, "A thread");
customThread.start();
try {
System.out.println("3");
countDownLatch.countDown();
Thread.sleep(1000);
System.out.println("2");
countDownLatch.countDown();
Thread.sleep(1000);
System.out.println("1");
countDownLatch.countDown();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
class CustomThreadCoundDownLatch extends Thread {
private CountDownLatch countDownLatch;
public CustomThreadCoundDownLatch(CountDownLatch countDownLatch, String name) {
setName(name);
this.countDownLatch = countDownLatch;
}
@Override
public void run() {
// TODO Auto-generated method stub
try {
countDownLatch.await();
System.out.println(getName() + " start running.");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}