Вызов синхронизированного метода из другого синхронизированного метода, оба для другого объекта - PullRequest
1 голос
/ 07 ноября 2019

Допустим, у нас есть два класса A, B и синхронизированные методы methodA, methodB соответствующих классов. Если мы вызываем синхронизированный метод B из синхронизированного метода A, удерживает ли поток блокировку объекта ObjectA, пока метод B все еще выполняется?

Class A
{
   public synchronized void methodA()
   {
       //do something;
       synchronized(ObjectB)
       {
          ObjectB.methodB();
       }
   }
}

Class B
{
   public synchronized void methodB()
   {
      //do something
   }
}

1 Ответ

0 голосов
/ 08 ноября 2019

Блокировка будет удерживаться, пока вы находитесь в блоке синхронизации. Разрешается блокировать столько блокировок, сколько вам нужно, но эта вложенная синхронизация может повлиять на общую производительность вашего приложения.

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