Java并发Semaphore

一.信号量

Semaphore也是一个线程同步的辅助类,可以维护当前访问自身的线程个数,并提供了同步机制。使用Semaphore可以控制同时访问资源的线程个数,例如,实现一个文件允许的并发访问数。

二.信号量模型

概况为:一个计数器,一个等待队列,三个方法。在信号模型里,计数器和等待队列对外是透明

,所以只能通过信号模型提供的三个方法来访问它们,这三个方法分别是:init()、down()、up()。

图片

这三个方法详细语义:

  • init():设置计数器初始值。
  • down():计数器的值减1;如果此时计数器的值小于0,则当前线程将阻塞,否则当前线程可以继续执行。
  • up():计数器的值加1;如果此时计数器的值小于或者等于0,则唤醒等待队列中一个线程,并将其从等待队列中移除。

这里提到的 ini

posted @ 2020-11-16 23:37  Dlimeng  阅读(12)  评论(0)    收藏  举报  来源