避免死锁

Java教程 发布时间:2021-10-18 11:11:48 阅读数:11414 1
下文是笔者收集的避免死锁的方法,如下所示:

加锁顺序

多个线程时间需要使用相同顺序的锁,采用此种方式可避免死锁发生
如下所示:
Thread 1:
  lock A 
  lock B

Thread 2:
   wait for A
   lock C (when A locked)

Thread 3:
   wait for A
   wait for B
   wait for C

加锁时限

另一个避免死锁的方法:“ 就是为锁设置一个超时时间,当一个线程在指定时间内未获取到相应锁时,则会释放所有获取的锁 ”

死锁检测

死锁检测是可以更好的预防死锁机制
当一个线程获取锁,将线程和锁信息记录到一个Map中,当其它线程请求时,我们可以去map中检测以下是否存在锁信息
如:
线程A请求锁2,但是锁2这个时候被线程B持有,这时线程A就可以检查一下线程B是否已经请求了线程A当前所持有的锁
如果线程B确实有这样的请求,那么就是发生了死锁(线程A拥有锁1,请求锁2;线程B拥有锁2,请求锁1)
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaCourse/202110/1486.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者