java deadlock相关的总结和检测

举报
Amrf 发表于 2020/10/28 14:43:29 2020/10/28
【摘要】 多线程之死锁就是这么简单避免死锁可以概括成三种方法:固定加锁的顺序(针对锁顺序死锁) 开放调用(针对对象之间协作造成的死锁) 使用定时锁-->tryLock()如果等待获取锁时间超时,则抛出异常而不是一直等待!Java多线程:死锁总结:避免死锁的方式1、让程序每次至多只能获得一个锁。当然,在多线程环境下,这种情况通常并不现实。2、设计时考虑清楚锁的顺序,尽量减少嵌在的加锁交互数量。3、既然死...

多线程之死锁就是这么简单

避免死锁可以概括成三种方法:

固定加锁的顺序(针对锁顺序死锁) 开放调用(针对对象之间协作造成的死锁) 使用定时锁-->tryLock()

如果等待获取锁时间超时,则抛出异常而不是一直等待!

Java多线程:死锁

总结:避免死锁的方式

1、让程序每次至多只能获得一个锁。当然,在多线程环境下,这种情况通常并不现实。

2、设计时考虑清楚锁的顺序,尽量减少嵌在的加锁交互数量。

3、既然死锁的产生是两个线程无限等待对方持有的锁,那么只要等待时间有个上限不就好了。当然synchronized不具备这个功能,但是我们可以使用Lock类中的tryLock方法去尝试获取锁,这个方法可以指定一个超时时限,在等待超过该时限之后便会返回一个失败信息。

Programmatic deadlock detection 
Java中的死锁检测 
Programmatic deadlock detection in java

Java面试必问-死锁终极篇 
java两种经典死锁例子,Lock发生死锁案列 
Java死锁范例与死锁分析

死锁

ThreadMonitor


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。