Java concurrency uses locks to provide mutually exclusive access to objects in a multi-threaded environment, and locks are associated with each object in Java (such as "Object"), and not just Threads.
1) Waiting and notification is a communication mechanism between two threads in Java. And the Object class is the right place to make them available for each object, since it is a superclass of all objects.
2) Locks are available for each object, which is another reason for waiting and notification in the Object class, and not in the Thread class.
source share