While investigating how the various Java synchronization primitives perform, I noticed that the performance of non-fair RentrantLock & Semaphore with 2 threads, was much