Кто-то на работе просто попросил аргументацию по поводу того, что нужно задержать ожидание внутри синхронизированного.
Честно говоря, я не вижу рассуждений. Я понимаю, что говорят javadocs, - что поток должен быть владельцем монитора объекта, но почему? Какие проблемы это предотвращает? (И если это действительно необходимо, почему метод ожидания не может получить сам монитор?)
Я ищу достаточно подробное объяснение или, возможно, ссылку на статью. Я не смог найти его в быстром google.
О, также, как выглядит thread.sleep?
edit: Отличный набор ответов - мне действительно хотелось бы выбрать более одного, потому что все они помогли мне понять, что происходит.