This project also covered the issue of race conditions.
JUnit Testing is provided within an iterator pattern that tests the contents of an enqueue method while in an atomic state or locked using a SpinLock.
The Semaphores are also tested within the unit test.