本帖最后由 xuxu5112 于 2015-9-23 21:35 编辑
今天刚学 我是这么理解的 一把锁对应 一把钥匙
CUP会在多个线程之间高效的切换
现在有AB两个线程
A里面 有 A锁 嵌套 B锁
B里面 有 B锁 嵌套 A锁
现在A开始执行 看到A锁就拿到了 A钥匙 执行到这里
B抢到了CPU资源 开始执行 看到B锁就拿了B钥匙 继续执行
下面看到A锁 但是 A钥匙在 A线程里 所有B线程拿不到然后程序回到 A线程 继续执行 看到B锁 需要B钥匙 但是B钥匙在B线程里
A线程也拿不到 然后程序就在A,B两个线程之间切换谁都没办法执行下去 形成死锁
|