JUC——线程同步辅助工具类(Semaphore,CountDo

2020-08-04  本文已影响0人  dinel

锁的机制从整体的运行转态来讲核心就是:阻塞,解除阻塞,但是如果仅仅是这点功能,那么JUC并不能称为一个优秀的线程开发框架,然而是因为在juc里面提供了大量方便的同步工具辅助类。

Semaphore信号量

Semaphore通常用于限制可以访问某些资源(物理or逻辑)的线程数目。

例如,大家排队去银行办理业务,但是只有两个银行窗口提供服务,来了10个人需要办理业务,所以这10个排队的人员需要依次使用这两个业务窗口来办理业务。

观察Semaphore类的基本定义:

public class Semaphore extends Object implements Serializable

Semaphore类中定义的方法有如下几个:

构造方法:

public Semaphore(int premits),设置服务的信号量;

构造方法:

public Semaphore(int premits,boolean fair) ,是否为公平锁;

等待执行:

public void acquireUninterruptibly(int permits)

设置的信号量上如果有阻塞的线程对象存在,那么将一直持续阻塞状态。

释放线程的阻塞状态:

public void release(int permits);

返回可用的资源个数:

public int availablePermits();

范例:实现银行排队业务办理

https://www.cnblogs.com/itermis/p/9004041.html

https://www.cnblogs.com/itermis/p/9004041.html

上一篇下一篇

猜你喜欢

热点阅读