Java并发Semaphore
一.信号量
Semaphore也是一个线程同步的辅助类,可以维护当前访问自身的线程个数,并提供了同步机制。使用Semaphore可以控制同时访问资源的线程个数,例如,实现一个文件允许的并发访问数。
二.信号量模型
概况为:一个计数器,一个等待队列,三个方法。在信号模型里,计数器和等待队列对外是透明
,所以只能通过信号模型提供的三个方法来访问它们,这三个方法分别是:init()、down()、up()。
这三个方法详细语义:
- init():设置计数器初始值。
- down():计数器的值减1;如果此时计数器的值小于0,则当前线程将阻塞,否则当前线程可以继续执行。
- up():计数器的值加1;如果此时计数器的值小于或者等于0,则唤醒等待队列中一个线程,并将其从等待队列中移除。
这里提到的 ini