首页 > 学院 > 开发设计 > 正文

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

2019-11-17 02:32:57
字体:
来源:转载
供稿:网友

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

C#经典面试题:

有3个线程,A线程打印1,B线程打印2,C线程打印3,请用程序实现依次打印123123123...

 1  class PRogram 2     { 3         static void Main(string[] args) 4         { 5             var mt = new MyThread(); 6             mt.Run(); 7  8             Console.ReadLine(); 9         }10     }11 12     13    internal class MyThread14    {15        private int number = 0;16        object obj = new object();17 18         public void Run()19         {20             var ta = new Thread(PrintNumber);21             var tb = new Thread(PrintNumber);22             var tc = new Thread(PrintNumber);23 24             ta.Start("1");25             tb.Start("2");26             tc.Start("3");27         }28 29        private void PrintNumber(object num)30        {31            for (int i = 0; i < 9; i++)32            {33                lock (obj)34                {35                    if (Convert.ToInt32(num) == number + 1 || Convert.ToInt32(num) == number - 2)36                    {37                        Console.Write(num);38                        number = Convert.ToInt32(num);39 40                        // 通知正在等候的线程41                        Monitor.PulseAll(obj);42                    }43                    else44                    {45                        // 本轮不应该打印的线程,就让他到lock外面等候通知46                        // 因为本次他也执行了判断,所以循环就少了一次47                        i--;48                        Monitor.Wait(obj);49                    }50                }51            }           52        }53     }

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


上一篇:C# 线程--第三线程池

下一篇:Md5加密

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表