If you synchronized here too and did notifyAll, then you wouldn't need to extra waiting within the wait loop and you'd only ever wait for the minimal period of time.