CountDownLatch、CyclicBarrier、Semaphore 的用法
1、CountDownLatch可以实现类似计数器的功能,可以控制线程完成指定的任务数。比如:
二、CyclicBarrier(回环栅栏-等待至barrier状态再全部同时执行)
可循环使用的屏障,职责时让一组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程到达时,屏障才会开门,所有被屏障拦截的线程才会继续干活。
三、Semaphore
是一种基于计数的信号量。它可以设定一个阈值,基于此,多个线程竞争获取许可信 号,做完自己的申请后归还,超过阈值后,线程申请许可信号将会被阻塞。
信号量主要有两个目的,一个用于多个共享资源的互斥使用,另一个用于并发线程数的控制。
实现互斥:创建计数为 1 的 Semaphore,将其作为一种类似互斥锁的机制,这也叫二元信号量, 表示两种互斥状态。
控制并发数:创建一个计数为3的Semaphore,模拟抢车位。