View Source on Github


Difficulty-Intermediate Java Concurrency

Also known as

Counting Semaphore


Create a lock which mediates access to a pool of resources. Only a limited number of threads, specified at the creation of the semaphore, can access the resources at any given time. A semaphore which only allows one concurrent access to a resource is called a binary semaphore.

alt text


Use a Semaphore when

  • you have a pool of resources to allocate to different threads
  • concurrent access to a resource could lead to a race condition


  • [Semaphore(programming)] (
  • [Semaphores] (