并发编程AQS----共享锁
Semaphore Semaphore 字面意思是信号量的意思,它的作用是控制访问特定资源的线程数目。应用场景:资源访问,服务限流。 Semaphore 实现AbstractQueuedSynchronizer的方法与 ReentrantLock 一样 Semaphore构造方法 public Semaphore( int permits) {------permits 表示能同时有多少个线程访问我们的资源 sync = new NonfairSync(permits); -------------默认创建的是非公平锁。 } abstract static class Sync extends AbstractQueuedSynchronizer { private static final long serialVersionUID = 1192457210091910933L; Sync(int permits) { setState(permits);-------传入的permits做i为了state的值,作为资源总数 } semaphore.acquire();获取资源,源码实现 public void acquire() throws InterruptedException { sync.acquireSharedInterruptibly( 1 );--------