美文网首页
JUC——线程同步辅助工具类(Semaphore,CountDo

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

作者: dinel | 来源:发表于2020-08-04 23:08 被阅读0次

    锁的机制从整体的运行转态来讲核心就是:阻塞,解除阻塞,但是如果仅仅是这点功能,那么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

    相关文章

      网友评论

          本文标题:JUC——线程同步辅助工具类(Semaphore,CountDo

          本文链接:https://www.haomeiwen.com/subject/kytsrktx.html