信号量是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
网友评论