synchronized(this) {и
//some stuff
}
synchronized(SomeClass.class) {
//some stuff
}
В Java каждый объект имеет ассоциированный с ним монитор (или lock - объект блокировки). Когда мы пишем такой код:
synchronized(this) {
//some stuff
}
мы получаем блокировку, ассоциированную с объектом, на который указывает this. Когда мы используем такую блокировку, мы подразумеваем, что мы готовы ждать, пока поток, использующий этот монитор, не освободит его. Такую блокировку имеет смысл использовать, если изменяем данные объекта (переменные объекта).
Когда мы пишем такой код:
synchronized(SomeClass.class) {мы получаем блокировку, ассоциированную с объектом SomeClass.class. Такую блокировку имеет смысл использовать, если мы изменяем данные (переменные) уровня класса, т.е. статические переменные.
//some stuff
}
Комментариев нет:
Отправить комментарий