本帖最后由 Darkhorse′Xa 于 2014-7-9 17:54 编辑
可以这么理解,线程A执行到同步代码块中拿到了locka的锁,这时候Cpu切换了马上挂起这个线程,执行线程B,线程B开始执行进入同步代码块当中拿到了lockb的锁.现在就可以试着理解一下,A线程拿着了locka锁要进lockb就需要lockb的锁而这个锁在B线程手里.,同理:B线程拿着的是lockb的锁想要进locka的代码块中但是这个锁是在A线程手里,这两者谁都无法再进入下一个同步代码块当中.就产生了死锁(一旦一个对象锁有人持有其他线程就无法再进入)程序就停在这了!synchronized的嵌套就很容易产生死锁的问题!这么说不知道能不能理解 |