Demystifying getAcquire and setRelease in Java