一, countDownLatch
常用方法.await(); countDown();
定义倒数的总数5, 即倒是5次后.await()的线程继续执行
CountDownLatch cdl =new CountDownLatch(5)
cdl.countDown(); 每调用一次倒数1个数
cdl.await();等待倒数完后执行.
二,CyclicBarrier
常用方法 await();
定义await线程总数3后同时启动.
CyclicBarrier barrier = new CyclicBarrier(3);
barrier.await(); 一个先到准备就绪.
两者的区别是, 继续执行的线程不一样, countDownLatch是await的线程开始执行,countdown()所在线程没有影响. cyclibarrier是,所有await的线程同时启动.
三,Semaphore 信号灯控制器
常用方法 acquire() //获取授权
release()//释放授权
final Semaphore semp = new Semaphore(5);
//定义最大运行线程数为5.如果超过5,则获取acquier()为false
四.lock的方法.
Lock lock = new ReentrantLock();
Condition cond = lock.newCondition();
lock.getHoldCount(): 获取保持锁定的线程数(lock中的数量);
lock.getQueueLength(): 获取等待获取锁定的线程数;
lock.getWaitQueueLength(cond): 获取cond.await中的线程数量;