1.介绍
信号量为多线程协作提供了更为强大的控制方法。广义上说信号量是对锁的扩展,可以指定多个线程同时访问某一资源。
2. 构造方法
public Semaphore(int permits) {
sync = new NonfairSync(permits);
}
public Semaphore(int permits, boolean fair) {
sync = fair ? new FairSync(permits) : new NonfairSync(permits);
}
3. 主要方法
public void acquire() throws InterruptedException;
public void acquireUninterruptibly();
public void acquire(int permits) throws InterruptedException;
public boolean tryAcquire() ;
public boolean tryAcquire(long timeout, TimeUnit unit);
public boolean tryAcquire(int permits);
public boolean tryAcquire(int permits, long timeout, TimeUnit unit)
throws InterruptedException;
public void release(int permits);
acquire()方法会尝试获得一个准入许可,若无法获得,则线程会等待,直到有一个线程释放一个许可或者当前线程被中断
实时内容请关注微信公众号,公众号与博客同时更新:程序员星星