java多线程并发juc包 countdownlatch 闭锁
闭锁是一次性对象
一旦进入终止状态,就不能被重置。
public class countdownlatchdemo {
public static void main(string[] args) throws interruptedexception {
int count = 5;
countdownlatch countdownlatch = new countdownlatch(count);
for (int i = 0; i < count; i++) {
new tangerine(string.valueof(i),countdownlatch).start();
}
system.out.printf("main线程等待\n");
countdownlatch.await();
system.out.printf("main线程运行结束");
}
static class tangerine extends thread {
final countdownlatch countdownlatch;
public tangerine(string name,countdownlatch countdownlatch) {
super(name);
this.countdownlatch = countdownlatch;
}
@override
public void run() {
system.out.printf("线程%s在运行\n", this.getname());
countdownlatch.countdown();
}
}
}await()等待,直到计数器中的值减为0。await(long timeout, timeunit unit)可以自己设置超时时间,一旦超过这个时间,await线程被唤醒,如果返回true,说明计数器为0,否则,不为0。countdown()使得计数器的值减1。getcount()得到当前计数器的值。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论