计数信号量(Semaphore)

2023-01-31  本文已影响0人  那个人一一加油

信号量是Java多线程的辅助类,他可以实现控制访问指定区域的线程数量

Semaphore sem=new Semaphore(premit,isFair);

premit是初始值,当一个线程拿到访问权限时,则该值减一。如果该值为0,则其他线程进入等待,或者继续往下执行。

isFair是否是公平模式,如果是,则按等待时间长短来排序,等待时间越长的则优先。

sem.acquire(premit) 获取锁,如果获取不到则进入等待,直到拿到锁为止。premit是获取令牌数量,默认为1

boolean sem.tryAcquire(premit),尝试去获取锁,如果拿不到,则继续往下执行。premit是获取令牌数量,默认为1

boolean sem.tryAcquire(premit,timeout,timeUnit) 尝试去获取锁,如果没有拿到则等待设定的时间,超时则继续往下执行

premit是获取令牌数量,默认为1

sem.release(premit); 释放锁,premit是释放锁的数量,默认为1 

上一篇 下一篇

猜你喜欢

热点阅读