-
Semaphore用于限制線程并發(fā)的數(shù)量
- Semaphore中的acquire()方法意思是使用一個許可,是一個減法操作。
- Semaphore中的release()方法意思是增加一個許可,增加同時間允許通過的線程數(shù)助琐,Semaphore允許通過的線程數(shù)是可以改變的。
- Semaphore的availablePermits()返回當前允許通過的線程數(shù)。
- semaphore.acquireUninterruptibly();在等待release()的時候不允許被中斷疟暖。如果使用這段代碼,在當前代碼到執(zhí)行release()方法之間田柔,不允許中斷俐巴。
- semaphore.drainPermits()清空當前允許通過的線程數(shù),并且返回當前允許的數(shù)目硬爆。
- semaphore.hasQueuedThreads()是否還有線程在等待欣舵。
- semaphore.getQueueLength()獲取還在等待的線程數(shù)。
- tryAcquire()嘗試獲取許可缀磕。
tryAcquire(3)嘗試獲取3個許可祝迂。
tryAcquire(3, TimeUnit.SECONDS)在3內獲取1個許可,獲取不到返回false贞岭。
tryAcquire(3,3,TimeUnit.SECONDS)在3秒內獲取3個許可亩钟,獲取不到返回false。 - Semaphore(1,true)構造函數(shù)如果是true為公平鎖獲取牲剃,如果是flase則為非公平鎖遣疯。
下面是Semaphore練習代碼
鏈接:鏈接:https://pan.baidu.com/s/1jIJ3oNk 密碼:myli