Java 标准库API系列之Semaphore
Semaphore是一种经典的同步工具,用于控制并发线程数,它可以保证在同一时间内只有一定数量的线程能够访问某个资源,从而避免线程间的竞争和冲突。 Semaphore有两个核心概念: 许可证(Permit):表示可用的访问权限数量,Semaphore内部维护了一个许可证池,初始时可以设置许可证的数量。 信号量(Semaphore):表示一个计数器,当线程想要访问某个资源时,必须先从Semaphore中获取一个许可证,然后才能访问资源;当线程使用完资源后,必须释放许可证,以便其他线程可以访问资源。 Semaphore的使用方式如下: 创建Semaphore对象,指定许可证数量。 在需要访问共享资源的线程中,调用acquire()方法获取许可证。 线程使用共享资源。 在共享资源使用完毕后,调用release()方法释放许可证。 听起来有点像操作系统里面信号量的概念,其实本质是一样的,不过操作系统层面的信号量是作用于进程与进程之间的同步,java里面的信号量是线程与线程之间的同步。 下面是一个简单的示例代码,使用Semaphore控制了同时执行的线程数目: import java.....