从另一个在不同对象上的同步方法中调用一个同步方法

时间:2019-11-07 16:58:57

标签: java multithreading synchronization

可以说我们有两个类A,B和相应类的同步方法methodA,methodB。如果我们从同步方法A调用同步方法B,那么在方法B仍在执行时,线程是否仍对对象A保持锁定?

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

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

1 个答案:

答案 0 :(得分:0)

只要您处于同步块,该锁就会一直保持。可以根据需要锁定任意数量的锁,但是这种嵌套的同步会影响应用程序的整体性能。