CountDownLatch、CyclicBarrier、Semaphore 的用法

1、CountDownLatch可以实现类似计数器的功能,可以控制线程完成指定的任务数。比如:

 

 二、CyclicBarrier(回环栅栏-等待至barrier状态再全部同时执行)

可循环使用的屏障,职责时让一组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程到达时,屏障才会开门,所有被屏障拦截的线程才会继续干活。

 

 三、Semaphore 

 是一种基于计数的信号量。它可以设定一个阈值,基于此,多个线程竞争获取许可信 号,做完自己的申请后归还,超过阈值后,线程申请许可信号将会被阻塞。

信号量主要有两个目的,一个用于多个共享资源的互斥使用,另一个用于并发线程数的控制。

实现互斥:创建计数为 1 的 Semaphore,将其作为一种类似互斥锁的机制,这也叫二元信号量, 表示两种互斥状态。

控制并发数:创建一个计数为3的Semaphore,模拟抢车位。

 

posted on 2020-08-21 16:34  希望者  阅读(202)  评论(0编辑  收藏  举报

导航