предположим, что мы имеемМожет ли поток получить блокировку экземпляра класса, когда другой поток выполняет статический синхронизированный метод этого класса?
class A {
void m1() {
synchronized (this) {
}
blah blah blah
synchronized (this) {
}
}
}
Мои сомнения при выполнении бла-бла-бла, выполняемой в данный момент поток с БЛокИРовкИ объект О, в это время, если другой поток с объектом O получает блокировку, Там будет тупик. Итак, как мы можем сказать, что мы должны попытаться использовать синхронизированный блок вместо синхронизированного метода?
Предположим, что поток t1 выполняет статический синхронизированный метод, который получает блокировку уровня класса, может ли другой поток получить блокировку экземпляра этого класса для выполнения других синхронизированных методов?
+1 Одна вещь, о которой стоит беспокоиться, заключается в том, что если есть блокировка на уровне класса _and_, блокировка экземпляра, то вы можете иметь тупик в зависимости от порядка блокировки этих двух замков. – Gray