Why wait(), notify() And notifyAll() Must be Called Inside a Synchronized Method or Block