Use Producer/Consumer problem to demonstrate semaphores.
What happens when consumers consume the buffer faster than the adders can fill the buffer?
All the consumer threads can use a a semaphore CanRemove with 4 permits.
Fairness is too expensive! FIFO versus randomness.
Interupt the thread to set isInterupted() boolean.
Allows the process to exit cleanly.
Think about operations that occur asynchronously as opposed to synchronously.
Thread.sleep(100) XOR InteruptedException.
Chad Salinas