黑马程序员技术交流社区
标题:
synchronized线程死锁的问题
[打印本页]
作者:
wupingtanlu
时间:
2012-4-21 15:52
标题:
synchronized线程死锁的问题
为什么在方法声明的时候用到了关键字synchronized 后再在方法体中用synchronized就会发生死锁的情况呢!
如果我们不用同一个锁对象就不是不会发生死锁的情况了吗?求解释,还有死锁还有那些情况导致呢?
平时写线程的时候要都注意些那些方面呢?
作者:
毕博
时间:
2012-4-21 18:33
设定到两个锁,也没什么用,就像老师说的,
如果进去里边synchronized的那个对象不释放自己的锁,外边synchronized里的对象进不去,
外边这个不进里面,就不是放当前自己拥有的锁,而里边的确恰恰需要。
两个人就等来等去,死锁了。
死锁的情况,还有饥饿的情况需要区分一下,饥饿是因为两个线程或多个线程用到相同的资源,而这个资源的数目仅仅只够一个人,但是分配的时候
每个线程只分配的很少,所以都不够用,都等着对方释放自己的资源给自己用。就饥饿了。
作者:
应佳锋
时间:
2012-4-24 11:28
我用 通俗易懂的话来描述吧
当线程1进入锁A的时候 线程2进入了锁B 但是当线程2想进入锁A的时候 进不去 同时线程1想进入锁B的时候也进不去 (因为使用了同步嘛 ) 就这样半死不活的拖着 就形成了死锁
一句话总结:N个线程都没有可以运行的代码 因为可运行的代码里已经有别的线程了 但是别的线程又出不来
作者:
张小庆
时间:
2012-4-24 11:36
这个~~wait()方法一定要有对应的notify()方法
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2