CountDownLatch,CyclicBarrier和信号量Semaphore

CountDownLatch,CyclicBarrier和信号量Semaphore都是java并发包concurrent下提供的并发工具类,是比synchrorized关键字更高效的同步结构。

CountDownLatch的用法顾名思义有一个计数器的概念,其应用场景是,如果B组线程要等A组线程全部执行完后再执行,那A组中每个线程都会调用其countDown方法计数,即A组中每跑一个线程计数加一。而B组中每个线程都会调用其await()方法。只有当计数达到预设值后,因调用await()方法而处于等待状态的线程全部执行。CountDownLatch可以用于高并发测试,即计数积累了一定数量的线程后再一起执行。

用法示例:

 

CyclicBarrier和CountDownLatch有点像,不过他不是计数。CyclicBarrier在初始化的时候可以定义一个参与线程的数量,即parties同伴数量,有点抽象,接下来线程中会先调用一个await()方法使线程处于等待状态。只有当有预设值parties个线程调用了await()方法后,那这parties个线程才能继续执行。简单点说就是凑齐了一拨人一起走。这里就有一个generation概念,即同一代线程,也就是前面说的同一拨人。值得注意的是当同一代线程一起执行后,generation会被自动重置,开始下一代的互相await()和一起执行。这也是和CountDownLatch区别最大的地方,Cou

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值