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()
得到当前计数器的值。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论