黑马程序员技术交流社区

标题: 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