I am reading about Condition in java.util.concurrent.locks.Condition .
java.util.concurrent.locks.Condition
Condition factors out the Object monitor methods (wait, notify and
For a bounded DataStructure for example, you can have the Conditions "notEmpty" and "notFull" and wait for them. Just one example. Have a look at the example here.