关于java的一个死锁问题!!~~~~

来源:百度知道 编辑:UC知道 时间:2024/07/02 07:15:51
这是我写的死锁的程序
打印结果为:
nt1进来了!
nt1开始睡眠
1
nt2进来了!
nt2开始睡眠
然后程序终止

对象02永远都不可能被锁,因为01未执行完;
也就是说 System.out.println("1");这句永远不可能执行
但实际情况不是这样的,为什么?

回答真确的追加30分,谢谢!!!

对象02为什么不能被锁呢?
在同步的方法中你同步的是01,这里和02是没有关系的。
如果你在同步的方法中再写一个同步块,同步的是同一个对象,那么就不能被执行。比如把同步块中的那个同步块的对象改成01,那么就不会执行了。
我这么说不知你能不能明白。

没有哇,我运行结果是

nt1进来了!
nt1开始睡眠!
1
nt2进来了!
nt2开始睡眠!
1

而且这个结构也是正确的撒?为什么不可能执行?你前面只是睡眠5秒而已,过了5秒它就会被自动唤醒执行下去的撒