JVM использует блокировки совместно с мониторами. Монитор — это, по сути, страж, который наблюдает за последовательностью синхронизированного кода и гарантирует, что только один поток одновременно выполняет синхронизированный фрагмент кода. Каждый монитор связан со ссылкой на объект. Потоку не разрешается выполнять код до тех пор, пока он не получит блокировку.
Итог
Ключевой вывод для интервью: как происходит синхронизация потоков внутри монитора? Какие уровни синхронизации вы можете применить?