Cenário de uso: comumente usado para usar recursos limitados e limitar o número máximo de encadeamentos simultâneos.
- Defina o número máximo de semáforos: Semáforo semáforo = novo semáforo (3);
- Obter semáforo:
- semaphore.acquire (); // Obter semáforo
- semaphore.acquire (3); // adquire várias licenças
- semaphore.tryAcquire (3); // Tente obter várias licenças
- semaphore.tryAcquire (5, TimeUnit.SECONDS); // Adquira permissão dentro de um determinado período
- Liberação de semáforo: semaphore.release ();
默认情况下,信号量是非公平性的(先等待先执行为公平。类似于买东西的时候大家排队付款,先来的先付款是公平的。但是这时候有人插队,那就是非公平的)