в Java, когда нам нужно вызвать wait/notify/notifyAll, нам необходимо иметь доступ к монитору объекта (либо через синхронизированный метод, либо через синхронизированный блок). Поэтому мой вопрос в том, почему Java не пошел на синхронизированные методы wait/notify, удалив ограничение вызова этих методов из синхронизированного блока или методов.
В случае, если они объявлены как синхронизированные, он автоматически включил доступ к монитору.