Почему методы wait
, notify
и notifyAll
помещаются в Object
, а не в какой-то отдельный класс?
Обратите внимание: этот вопрос заключается не в том, чтобы переместить их в класс Thread
, мне просто интересно, почему они мешают Object
, а не какой-то новый класс Monitor
.
Я вижу следующие недостатки этой идеи:
- Мы не сможем использовать наши поля для других целей в качестве мониторов. Но это, похоже, согласуется с принципом модульности.
- Синхронизированные методы теперь потребуют некоторого взлома с генерируемыми скрытыми полями (например, в закрытии), поскольку
this
и<MyClass>.class
становятся недопустимыми мониторами.
Таким образом, мы могли бы отвести 5 способов от каждого объекта с небольшим горем. Или нет?