信号量用于控制同一时刻可以同时访问某一资源的最大允许数量,常见的使用场景是连接池。
拿数据库连接池作为使用场景,信号量的初始值代表了连接池的最大数量,外部线程从连接池获取一个连接,可用连接的数量就会减1;
直到连接池可用连接数量为零时,外部线程被阻塞,此时如果有其它线程释放掉了占用的连接,该等待线程即可获得连接。
1 |
|
下面这个示例代码实现了一个有限容量的HashSet,往set中添加元素时需要获取信号量,删除元素时则释放信号量
1 |
|
信号量用于控制同一时刻可以同时访问某一资源的最大允许数量,常见的使用场景是连接池。
拿数据库连接池作为使用场景,信号量的初始值代表了连接池的最大数量,外部线程从连接池获取一个连接,可用连接的数量就会减1;
直到连接池可用连接数量为零时,外部线程被阻塞,此时如果有其它线程释放掉了占用的连接,该等待线程即可获得连接。
1 |
|
下面这个示例代码实现了一个有限容量的HashSet,往set中添加元素时需要获取信号量,删除元素时则释放信号量
1 |
|