首先你的代码应用出现了两个知识点1、lock 加锁:它可以把一段代码定义为互斥段,互斥段在一个时刻内只允许“一个线程”进入执行,而其他线程必须等待。形成互斥 有效范围就是 {} 之间,当代码执行到 }之后 锁定就会解除。 2、函数的递归调用。test(i); 根据 两个技术点特性,可以可定你当i>10 的时候,会进行函数递归,但是不会出现死锁,因为:lock只会生效于多线程,对于单线程,自身已经是锁的所有者,并不会出现为了继续加锁等待原有锁释放。