Почему методы wait
, notify
и notifyAll
помещены в Object
, а не в какой-то отдельный класс?
Заметьте, этот вопрос не о переводе их в Thread
класс, мне просто интересно, почему они засоряют Object
, а не какой-то новый Monitor
класс.
Я вижу следующие недостатки этой идеи:
- Мы не сможем использовать наши поля для других целей в качестве мониторов. Но это, кажется, согласуется с принципом модульности.
- Синхронизированные методы теперь потребуют некоторого взлома со сгенерированными скрытыми полями (например, в замыканиях), так как
this
и<MyClass>.class
становятся недействительными мониторами.
Таким образом, мы могли бы удалить 5 методов из каждого объекта с небольшим горе. Или не?
I just wonder why does they litter Object, not some new Monitor class.
- концептуально делают внутренне, но монитор уникален для каждого объекта. Смотрите дубликат ответа (хотя он относится кThread
) - person Andreas Fester   schedule 16.02.2016sleep/wakeup()
непривлекательного внутреннего устройства UNIX. - person user207421   schedule 16.02.2016