您当前的位置: 首页 > 

顧棟

暂无认证

  • 2浏览

    0关注

    227博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【JUC系列】LOCK框架系列之四 同步工具类Semaphore

顧棟 发布时间:2022-04-27 06:00:00 ,浏览量:2

Semaphore

文章目录
  • Semaphore
    • 主要成员
      • 成员变量
      • 内部类
        • Sync
        • NonfairSync
        • FairSync
      • 核心方法
    • 示例
    • 源码分析
一种并发流程控制的工具类。

用来控制访问特定资源的线程数量,通过协调各个线程,保证合理利用资源。

主要成员 成员变量
/*同步队列*/
private final Sync sync;
内部类 Sync

Sync继承了AQS,并实现了共享锁的获取与释放相关方法。同步控制依赖AQS。详细见AQS的分析.

    abstract static class Sync extends AbstractQueuedSynchronizer {
        private static final long serialVersionUID = 1192457210091910933L;
        
        // 构造器
        Sync(int permits) {
            setState(permits);
        }
        
        // 获取同步状态值
        final int getPermits() {
            return getState();
        }

        // 非公平式获取共享锁
        final int nonfairTryAcquireShared(int acquires) {
            // 无限循环
            for (;;) {
                // 获取当前同步状态值--可用锁的数量
                int available = getState();
                int remaining = available - acquires;
                // 当CAS操作成功或剩余锁不足的时候,返回退出
                if (remaining             
关注
打赏
1663402667
查看更多评论
0.0403s