public synchronized int getCountOne() {
return count++;
}
Как и в приведенном выше коде, синхронизация по методу функционально эквивалентна наличию synchronized (this) block
вокруг тела метода. Объект «это» не блокируется, а объект «это» используется как mutex
, и тело не может выполнять одновременно с другими разделами кода, также синхронизированными по «этому».Как фиксируется замок уровня
На тех же основаниях, что используется в качестве mutex
, когда мы приобретаем уровня класса lock.As, если мы имеем функцию
public static synchronized int getCountTwo() {
return count++;
}
, очевидно, два потока могут одновременно получать замки на getCountOne (объект блокировки уровня) и getCountTwo (блокировка уровня). Так как getCountOne аналогичен
public int getCountOne() {
synchronized(this) {
return count++;
}
}
есть ли эквивалент getCountTwo? Если какие-либо критерии не используются для получения блокировки уровня Класса?
Спасибо за красивое объяснение – Prabhaker