Reentrant lock example using await() and signal() methods from Condition object