计数信号量(Semaphore)

信号量是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 

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。