Semaphore---信号量常用方法总结(6)--Semapore类中其他方法

package com.example.demo.ThreadTest.Semaphore;

import java.util.concurrent.Semaphore;

/**
 * @author muyou
 * @date 2020/10/14 11:38
 * 方法availablePermits()是返回当前可用的许可数量
 * 方法drainPermits()是返回立即可用的所有许可数量,并将可用许可数置为0
 * 方法getQueueLength()作用是取得等待许可的线程个数
 * 方法hasQueuedThreads()作用是判断有没有线程正在等待这个许可
 * 方法tryAcquire()作用是尝试获取1个许可,如果获取不到就返回false,常与if等条件判断语句连用
 * 方法tryAcquire(int primits)作用是尝试获取primits个许可,如果获取不到就返回false
 * 方法tryAcquire(int primits,long timeout,TimeUnit time)作用是在指定时间内获取primits个许可,如果获取失败返回false
 */
public class SemaphoreTest5 {
    
    

    public static void main(String[] args) {
    
    
        try {
    
    
            Semaphore semaphore = new Semaphore(10);

            System.out.println("可用许可数量:" + semaphore.availablePermits());
            semaphore.acquire(10);
            System.out.println("可用许可数量:" + semaphore.availablePermits());
            semaphore.release(10);
            System.out.println("可用许可数量:" + semaphore.availablePermits());
            System.out.println("可用许可数量:" + semaphore.drainPermits());
            System.out.println("可用许可数量:" + semaphore.availablePermits());
        }catch (InterruptedException e){
    
    
            e.printStackTrace();
        }
    }
}

执行结果:
可用许可数量:10
可用许可数量:0
可用许可数量:10
可用许可数量:10
可用许可数量:0

猜你喜欢

转载自blog.csdn.net/weixin_42163781/article/details/109079497