A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始



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

4 个回复

倒序浏览
学习到了
回复 使用道具 举报
嘿嘿,举例子的时候好像是线程1得到A锁想拿B锁继续执行,而线程2拿B锁想拿A锁继续执行,互相持有对方需要的锁对象导致两条线程各自拿不到执行权进入等待状态.而且死锁真正意义上不是无法解决,是解决起来巨难(方法可以尝试百度,难度极大).一般为了避免死锁,多线程中使用的锁对象需要保持一致,或者说代码的公共执行部分需要保持锁对象一致.才不会导致"僵持不下"
回复 使用道具 举报
表示还没学啊.{:2_34:}
回复 使用道具 举报
一般出现在同步代码块嵌套中,尽量不能使用嵌套锁对象
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马