C#经典面试题:
有3个线程,A线程打印1,B线程打印2,C线程打印3,请用程序实现依次打印123123123...
class Program { static void Main(string[] args) { var mt = new MyThread(); mt.Run(); Console.ReadLine(); } } internal class MyThread { ; object obj = new object(); public void Run() { var ta = new Thread(PrintNumber); var tb = new Thread(PrintNumber); var tc = new Thread(PrintNumber); ta.Start("); tb.Start("); tc.Start("); } private void PrintNumber(object num) { ; i < ; i++) { lock (obj) { || Convert.ToInt32(num) == number - ) { Console.Write(num); number = Convert.ToInt32(num); // 通知正在等候的线程 Monitor.PulseAll(obj); } else { // 本轮不应该打印的线程,就让他到lock外面等候通知 // 因为本次他也执行了判断,所以循环就少了一次 i--; Monitor.Wait(obj); } } } } }
偷 @宋兴柱-Sindrol 同学的代码:C#中添加三个线程同时启动执行某一方法,并依次调用某方法中的循环打印输