目录
1. 概述
作为一名英语渣渣,先上这个单词的音标 [ˈseməfɔː(r)],知道怎么读了就意味着记住了。。。
又到周末了,继续开始java多线程相关的学习。前面的章节中,学习了两个同步器,CountDownLatch和CyclicBarrier,他们都是递减同步器,即当CountDownLatch和CyclicBarrier实例计数器递减到0时,会继续执行主线程下面的流程。
- 递增同步器
Semaphore(信号量)也是一个同步工具,但他是递增同步器。
- Semaphore的用途
用来控制同时访问某个特定资源的线个数量,通过协调多个线程,以保证合理的使用公共资源。
比如:控制一个文件允许同时访问的线程数。
比如:数据库连接池,同时进行连接的线程有数量限制,连接不能超过一定的数量,当连接达到了限制数量后,后面的线程只能排队等前面的线程释放了数据库连接才能获得数据库连接。
比如:停车场场景,车位数量有限,同时只能容纳多少台车,车位满了之后只有等里面的车离开停车场外面的车才可以进入。