Параллелизм: синхронизация против блокировки - PullRequest
2 голосов
/ 24 сентября 2010

В чем разница между синхронизацией и блокировкой в ​​Java?

Ответы [ 2 ]

2 голосов
/ 24 сентября 2010

synchronized - ключевое слово языка; Замки - это объекты.

Когда метод или блок кода помечен как синхронизированный, вы говорите, что некоторый объект блокировки (который может быть указан в синтаксисе синхронизированного) должен быть получен методом или блоком, прежде чем он может быть выполнен.

1 голос
/ 19 сентября 2014

Ключевое слово synchronized и объекты Lock используются для достижения синхронизации в Java.Synchronized работает с механизмами монитора, которыми обладает каждый Object в Java, в то время как блокировка - это более простой объект, который является строительным блоком монитора.я считаю, что в основном вопрос заключается в разнице между монитором и замком.

Блокировка, такая как semaphore, представляет собой простой механизм, который может обеспечить синхронизацию только путем взаимного исключения.Если один поток получил (lock.acquire()) конкретную блокировку, никакой другой поток не сможет получить такую ​​же блокировку, пока первый поток не снимет ее (lock.release()).Монитор с другой стороны действует не только на взаимное исключение, но и на переменные условия.В сценарии, когда поток T1 входит в монитор объекта, поток T2 намеревается войти в тот же монитор, T2 будет ожидать, пока T1 не выйдет из монитора, и в современной JVM T2 фактически введет монитор вправопосле выхода T1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...