黑马程序员技术交流社区
标题:
多线程问题,死锁。
[打印本页]
作者:
锦宁
时间:
2014-6-27 21:52
标题:
多线程问题,死锁。
什么情况下会发生死锁,如何解决死锁问题??
作者:
Maple_枫
时间:
2014-6-27 22:05
当两个或多个线程的锁对象不是同一个时会发生死锁
作者:
HF_Opticalix
时间:
2014-6-27 22:19
楼上不对吧 两个线程都持有同一把锁时 由于都需要等待对方释放资源 才会发生死锁
举例如下 两个线程分别执行flag=0和=1的代码
public void run()
{
if (flag == 1)
{
synchronized(TheLock.locka)
{
System.out.println("flag0 a");
try{Thread.sleep(10);}catch (Exception e){}//延迟一下保证另一个线程进来
synchronized(TheLock.lockb)//需要b锁 却已被另一个线程占用
{
System.out.println("flag0 b");
}
}
}
else
{
synchronized(TheLock.lockb)
{
System.out.println("flag1 b");
try{Thread.sleep(10);}catch (Exception e){}
synchronized(TheLock.locka)
{
System.out.println("flag1 a");
}
}
}
}
复制代码
作者:
九号球
时间:
2014-6-27 22:25
本帖最后由 九号球 于 2014-6-27 22:27 编辑
死锁最容易在嵌套的同步锁中出现,当外层的线程拿着里层的同步锁,离层的线程拿着外层的同步锁时,就会发生死锁现象。
作者:
锦宁
时间:
2014-6-28 00:24
有些了解了!!!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2