黑马程序员技术交流社区
标题:
关于死锁问题
[打印本页]
作者:
芦青
时间:
2013-4-13 19:03
标题:
关于死锁问题
本帖最后由 芦青 于 2013-4-14 15:51 编辑
class Xc implements Runnable
{
boolean bb=true;
public void run()
{
if(bb)
{
synchronized(Xc.class)
{
System.out.println("Xc");
synchronized(this)
{
System.out.println("this");
}
}
}
else
{
synchronized(this)
{
System.out.println("this");
synchronized(Xc.class)
{
System.out.println("Xc");
}
}
}
}
}
class Demo
{
public static void main(String[] args)
{
Xc x=new Xc();
Thread t1=new Thread(x);
Thread t2=new Thread(x);
t1.start();
try{Thread.sleep(10);} catch(Exception e){}
x.bb=false;
t2.start();
}
}
疑问:我这算死锁吗? 和毕老师有点不同,只有一个对象..和毕老师的创建2个对象,有啥不同的吗?
作者:
沈浩
时间:
2013-4-13 19:32
这个是死锁 你想看到死锁的效果的话 就分别在if 和else 里给同步代码块加上无限循环 这样就可以看到死锁的效果了
作者:
崔宝东
时间:
2013-4-13 19:40
这个是死锁,首先你用了两个锁,并且互相嵌套,符合死锁的条件;
作者:
沈浩
时间:
2013-4-13 19:40
毕老师讲过 多线程中同步代码块嵌套时多线程在运行的过程中有可能和谐 你要我的锁没问题给你用 但是当我持有你要的锁不放你持有我要的锁不放 互不相让 就形成了死锁
作者:
崔宝东
时间:
2013-4-13 19:40
这个是死锁,首先你用了两个锁,并且互相嵌套,符合死锁的条件,所以你这个是死锁。
作者:
①人←①城市
时间:
2013-4-13 20:49
产生死锁的四个必要条件:
(1) 互斥条件:一个资源每次只能被一个进程使用。
(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。
(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
显然你的程序符合了
作者:
、__WSD吴少东
时间:
2013-4-13 22:02
创建两个对象,那还叫对同一个资源使用多线程么???
作者:
lipingan0520
时间:
2013-4-14 10:17
死锁必须要2个或者,2个以上的线程,才能产生哦,你创建了2个线程,但是只开启一个线程操作,这样锁不死的。
作者:
黄玉昆
时间:
2013-4-14 14:11
如果问题未解决,请继续追问,如果没有问题了,请将帖子分类 改为“已解决”,谢谢
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2