В чем преимущество использования интерфейса/реализации Condition над обычным механизмом уведомления о ожидании? Здесь я цитирую комментарии, написанные Дугом Ли:
Условие учитывает методы мониторинга объекта (wait, notify и notifyAll) в разные объекты, чтобы дать эффект наличия нескольких наборов ожидания для каждого объекта, объединив их с использованием произвольных реализаций блокировки. Если блокировка заменяет использование синхронизированных методов и операторов, условие заменяет использование методов мониторинга объекта.
Я вижу, что это более объектно-ориентированный способ реализации механизма ожидания/уведомления. Но есть ли преимущество над первым?