java 可重入锁如何避免死锁的?

《java并发编程的例子》publicclassWidget{publicsynchronizedvoiddosomething(){...}}publicclassLo... 《java并发编程的例子》
public class Widget{
public synchronized void dosomething(){
...
}
}
public class LoggingWidget extends Widget{
public synchronized void dosomething(){
super.dosomething();
}
}

说LoggingWidget 的super.dosomething();无法获得Widget对象的锁,因为会死锁。这个过程是怎么回事?
到底是父类先获得Widget的锁还是子类先获得Widget锁的?

是谁先得到锁导致谁得不到锁结果产生死锁的?这部分没看懂。
展开
 我来答
吉他man0
2014-05-01 · 超过27用户采纳过TA的回答
知道答主
回答量:54
采纳率:0%
帮助的人:41.3万
展开全部
synchronized标记的同步是要绑定一个对象的,不写的话实际上实际上就是synchronized(this),即绑定当前对象,这个this对象就是锁(synchronized中可以认为就是监视器),当LoggingWidget执行dosomething的时候获得了这把锁(this),那么他去调用父类(Widget)的dosomthing的时候,父类的dosomething方法也要得到这个锁(this),但是子类的这个方法还没有运行完毕,所以还持有这个锁,父类方法在等,子类不释放锁还拼命的让父类方法执行,却不知道父类方法在眼巴巴的等着这个锁,这样就死锁了······
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式