一、Semaphore简介

Semaphore(信号量)是一种计数器,用于控制同时访问特定资源的线程数量,它可以维护当前访问资源的线程数量,并控制最大并发数量。Semaphore可以控制某个资源可被同时访问的个数,通过协调各个线程,从而保证合理的使用公共资源。

二、Semaphore的使用

Semaphore的使用非常简单,只需要实例化一个Semaphore对象,并传入一个整数值即可,该整数值代表了同时访问某个资源的线程数量,例如下面的代码:

三、Semaphore的方法

Semaphore提供了如下几种方法,可以用于控制线程的访问:

1、acquire():用于获取一个许可,若无许可可用,则会一直等待,直到获取到许可;

2、release():用于释放一个许可;

3、tryAcquire():尝试获取一个许可,若获取到,则立即返回true,若没有获取到,则立即返回false;

4、tryAcquire(long timeout, TimeUnit unit):尝试获取一个许可,若在指定的时间内获取到许可,则立即返回true,否则则立即返回false。