C# 3个线程A B C 依次打印123123123..

时间:2021-10-17 20:27:16

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);
                    }
                }
            }
        }
     }

C# 3个线程A B C 依次打印123123123..

偷 @宋兴柱-Sindrol 同学的代码:C#中添加三个线程同时启动执行某一方法,并依次调用某方法中的循环打印输