Согласно документации Oracle для Внутренние блокировки и синхронизация :
Собственные блокировки играют роль в обоих аспектах синхронизации:
обеспечение исключительного доступа к состоянию объекта и создание
отношения, которые происходят до того, как они станут важными для видимости.
Мой вопрос:
что происходит до того, как отношения здесь означают в контексте синхронизации? Означает ли это, что, как только поток выполняет синхронизированный блок, все изменения сбрасываются в основную память, прежде чем другой поток придет и снова получит блокировку?
Также у меня есть еще один вопрос:
Предположим, thread1 получил блокировку и выполняет синхронизированный блок.
Возможно ли для JVM / планировщика потока принудительно thread1 перевести в другое состояние, скажем wait , так что он снимет блокировку, а другой поток скажет thread2 получит замок? Теперь через некоторое время thread1 может снова перейти в рабочее состояние и начать с того места, где он потерял блокировку.