繁体   English   中英

同步对象处理是否传递给Java中的调用函数?

[英]Does a synchronized objects handle pass to a called function in Java?

所以可以说我有以下代码:

public void bar(){
  synchronized(foo){foo.remove(0)}
}

public void doStuff(){
  synchronized(foo){
     bar()
  }
}

同步是否会意识到我所在的当前链具有此锁并继承它,否则它将死锁?

您从同步块获得的锁是可重入的 这不会死锁,线程可以多次获取同一对象的锁。

请参阅内部锁和同步

正如Mat所说的那样,它不会死锁。

我怎么看

这种锁定机制不取决于方法调用,而是取决于控制流。 单个线程如何执行语句以及线程何时遇到同步块,然后它要求在同步签名中锁定对象。

如果具有它,则进入其他状态,它将在对象的锁池中等待,直到得到通知。

执行doStuff()的线程已经携带了锁,因此这就是为什么没有死锁的情况

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM