黑马程序员技术交流社区
标题:
有关于死锁的问题
[打印本页]
作者:
littlefoxtail
时间:
2013-5-13 14:29
标题:
有关于死锁的问题
本帖最后由 littlefoxtail 于 2013-5-13 16:10 编辑
class House{
}
class Man extends Thread{
House h;
public Man(House h){
this.h = h;
}
public void run() {
synchronized (h) {
System.out.println("买房子");
}
}
}
public class DeadLockDemo {
public static void main(String[] args) {
House h = new House();
Man m = new Man(h);
m.start();
synchronized (h) {
try {
m.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("end");
}
}
}
复制代码
这个死锁程序对么,有没有可能先执行run方法,再执行主函数
作者:
飞鸟青崖
时间:
2013-5-13 15:44
是一个死锁程序。因为当主函数执行到join的时候会暂停执行,直至m的run方法执行结束。
但是此时主函数把锁h拿着未释放,所以run方法也执行不了。这样两个线程都进行不下去了,就死锁了。
不可能先执行run方法再执行主函数,因为主函数是一个程序的入口,只有从主函数开始执行代码的。
作者:
littlefoxtail
时间:
2013-5-13 16:10
谢谢,解释的很详细
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2