Java Assignment Solution on Synchronization Primitives