Extending Java's Semaphore to Allow Dynamic Resizing
eng.genius.com