Java并发组件三之Semaphore

使用场景:常用于使用有限的资源,限制线程并发的最大数量。
  • 设定信号量的最大个数:Semaphore semaphore=new Semaphore(3);
  • 获取信号量:
    • semaphore.acquire(); //获取信号量
    • semaphore.acquire(3); //获取多个许可
    • semaphore.tryAcquire(3); //尝试获取多个许可
    • semaphore.tryAcquire(5, TimeUnit.SECONDS); //给定时间内获取许可
  • 释放信号量:semaphore.release();
默认情况下,信号量是非公平性的(先等待先执行为公平。类似于买东西的时候大家排队付款,先来的先付款是公平的。但是这时候有人插队,那就是非公平的)

猜你喜欢

转载自www.cnblogs.com/Courage129/p/12726370.html
今日推荐