黑马程序员技术交流社区

标题: 线程死锁是什么,为什么有死锁,怎么解决死锁? [打印本页]

作者: Jarc    时间: 2016-9-11 16:52
标题: 线程死锁是什么,为什么有死锁,怎么解决死锁?


        为了解决程序因占用资源,出现资源争抢,而出现的程序进入等待的状态(死锁)。
        举例:有A和B两个线程,有CD 两把锁, A和B嵌套CD锁,A线程中有C,D锁,B线程中有D C两把锁,当两个线程运行时,就可能会出现死锁导致
程序停滞的情况。
        怎么解决:真正意义上来说,死锁是不能被解决的,死锁是多线程中的一个需要避免的重大的问题,当我们在编写程序时,可以给共享的资源加上另外一
个把锁,控制资源的动态,同时可以设置线程的优先级使线程之间协调合理的利用CPU的时间。

作者: a953558401    时间: 2016-9-11 17:38
学习到了
作者: zhangqi0730    时间: 2016-9-11 19:36
嘿嘿,举例子的时候好像是线程1得到A锁想拿B锁继续执行,而线程2拿B锁想拿A锁继续执行,互相持有对方需要的锁对象导致两条线程各自拿不到执行权进入等待状态.而且死锁真正意义上不是无法解决,是解决起来巨难(方法可以尝试百度,难度极大).一般为了避免死锁,多线程中使用的锁对象需要保持一致,或者说代码的公共执行部分需要保持锁对象一致.才不会导致"僵持不下"
作者: H_bean    时间: 2016-9-11 21:10
表示还没学啊.{:2_34:}
作者: MarsBong    时间: 2016-9-11 23:00
一般出现在同步代码块嵌套中,尽量不能使用嵌套锁对象




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2