//运行线程, 执行countDown()操作
class CountDownThread implements Runnable{
CountDownLatch count;
public CountDownThread(CountDownLatch count){
this.count = count;
}
public void run(){
System.out.println("CountDownThread : "+this.toString() + " runing ...");
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
count.countDown();
System.out.println("CountDownThread : "+this.toString()+" finished ...");
}
}
//等待线程
class AwaitThread implements Runnable{
CountDownLatch count;
public AwaitThread(CountDownLatch count){
this.count = count;
}
public void run(){
System.out.println("AwaitThread : "+this.toString()+" await ...");
try {
this.count.await(2, TimeUnit.SECONDS);//等待两秒钟, 如果CountDownLatch没有countDown到0,自动唤醒
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("AwaitThread : "+this.toString()+"finished ...");
}
}
public class CountDownLatchTest {
public static void main(String [] args){
CountDownLatch count = new CountDownLatch(3);
for(int i=0; i<3; i++){
new Thread(new CountDownThread(count)).start();
}
new Thread(new AwaitThread(count)).start();
new Thread(new AwaitThread(count)).start();
}
}
CountDownLatch使用说明
最新推荐文章于 2024-04-16 18:13:38 发布