Синхронизация блоков в многопоточном программировании происходит с помощью ключевого слова synchronized. 12 Оно помещает определённый кусок кода в режим, при котором блок может выполняться только одним потоком одновременно. 2
В случае синхронизированных блоков после слова synchronized указывается объект, который обеспечивает внутреннюю блокировку. 1 Когда один поток заходит внутрь блока кода, Java-машина тут же блокирует монитор объекта, и больше ни один поток не сможет зайти в этот блок, пока первый поток его не покинет. 1 Как только поток выходит из блока, помеченного synchronized, монитор автоматически освобождается и становится доступным для захвата другим потоком. 1
Синхронизированные методы гарантируют, что только один поток может выполнять определённый метод в данном объекте. 3 Все другие потоки, которые попытаются вызвать этот метод, будут ждать, пока текущий поток не завершит выполнение. 3