namespace ClassLibrary{ public class DeadLockSimulator { object lock1 = new object(); object lock2 = new object(); public void Method1() { Thread.Sleep(20); lock (lock1) { Console.WriteLine("Method1 acquired lock1"); lock (lock2) { Console.WriteLine("Method1 acquired lock2"); } Console.WriteLine("Method1 exiting!"); } } public void Method2() { Thread.Sleep(10); lock (lock2) { Console.WriteLine("Method2 acquired lock2"); lock (lock1) { Console.WriteLine("Method2 acquired lock1"); } Console.WriteLine("Method2 exiting!"); } } public void SimulateDeadLock() { Thread thread1 = new Thread(new ThreadStart(Method1)); Thread thread2 = new Thread(new ThreadStart(Method2)); thread1.Start(); thread2.Start(); thread1.Join(); thread2.Join(); } }}