今天写了一个代码:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Runtime.InteropServices; using System.Threading; namespace WindowsFormsApp1 { /// <summary> /// 递归测试 /// </summary> public class RecursionTest { int _NUM = -1; public void ShowInfo() { for (int i = 0; i < 3; i++) { _NUM++; lock (this) { if (_NUM < 3) { Console.WriteLine($" 第 { _NUM } 次,线程ID:{Thread.CurrentThread.ManagedThreadId}"); this.ShowInfo(); } else { Console.WriteLine($" 第 { _NUM } 次,线程:{Thread.CurrentThread.ManagedThreadId} "); } } } } } }
咋一看,以为会发生死锁,其实不会,原因是: 只有一个线程,没多线程。死锁的条件之一是要有多线程。