wait and notify are in object class because we use them for communication between thread and objects.if wait() is called on thread that thread has to release object it holds.these facility is not provided to Thread class methods liek sleep() or suspend() which does not release objects.
Inter thread communication is not directly supported by the producer or consumer but by the object they are acting upon. Also lock is associated with a particular object. If a thread needs a lock it use sync block and release using object's methods.