因此,可以说我有这样的代码:同步对象处理是否传递给Java中的被调用函数?
public void bar(){
synchronized(foo){foo.remove(0)}
}
public void doStuff(){
synchronized(foo){
bar()
}
}
将同步意识到当前链我在有这个锁和继承它还是会死锁?
因此,可以说我有这样的代码:同步对象处理是否传递给Java中的被调用函数?
public void bar(){
synchronized(foo){foo.remove(0)}
}
public void doStuff(){
synchronized(foo){
bar()
}
}
将同步意识到当前链我在有这个锁和继承它还是会死锁?
您从同步块获得的锁是可重入。这不会死锁,一个线程可以多次获取对同一个对象的锁定。
正如马特所说,它不会死锁。
我怎么把它看作
,这种锁机制是不依赖在方法调用但 控制流。 单线程如何执行语句,并且线程 遇到同步块时,它会要求锁定同步签名中的对象。
如果有,它会进入否则会在对象的锁池中等待,直到得到通知。
执行了doStuff()的线程已经执行了锁定,所以这就是为什么没有死锁的情况