Я хотел бы лучше понять механику того, что на самом деле происходит, когда поток входит в блок synchronized(this)
против блока synchronized(someObjectReference)
.Различия между синхронизированными (это) и синхронизированными (objectReference)
synchronized (this) {
// Statement 1
// Statement 2
}
synchronized (someObjectReference) {
// Statement 1
// Statement 2
}
Как я понимаю: (? Я упускаю что-то я не прав)
- В обоих случаях, только один поток может получать доступ синхронизируется поблочно
- Когда мы «повторно синхронизировать на
someObjectReference
:- только один поток одновременно может получить доступ к/изменить его в этом блоке
- только 1 поток в то время, может войти в этот блок
Какие механики есть пожалуйста?
synchronized (objectReference) {
// Statement 1 dealing with someObjectReference
// Statement 2 not dealing with someObjectReference
}
В приведенном выше примере, это имеет какой-либо смысл долить заявления не касающиеся mutex
в синхронизированный блок?
Nice и ясно. Спасибо – JAM