code
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Console.WriteLine("\nthe gun has ring!~~~~\n"); // ShowSingleThreadRun(); ShowMultiThreadRun(); Console.WriteLine("\nthe race over!\n"); Console.ReadKey(); } private static void ShowSingleThreadRun() { Runner runner = new Runner("羊",5); Runner wolf = new Runner("灰太狼",6); int length = 60; runner.Run(length); wolf.Run(length); } private static void ShowMultiThreadRun() { Runner runner = new Runner("羊", 5); Runner wolf = new Runner("灰太狼", 6); int length = 60; Thread sheepThread = new Thread(new ParameterizedThreadStart(runner.Run)); Thread wolfThread = new Thread(new ParameterizedThreadStart(wolf.Run)); Console.WriteLine("回车后开始跑步"); Console.ReadLine(); sheepThread.Start(length); wolfThread.Start(length); //硬性使之排队,shi sheepThread.Join(); wolfThread.Join(); } } sealed class Runner { private string _name; private int _speed; public string Name { get { return _name; } set { _name = value; } } public Runner(string name,int speed) { this._name = name; this._speed = speed; } public void Run(object objlength) { if (objlength != null && objlength.GetType().FullName == "System.Int32") { int length = Int32.Parse(objlength.ToString()); Console.WriteLine("<" + this.Name + "> listen to me, ready to run!"); for (int count = this._speed; count <= length; count += this._speed) { Thread.Sleep(1000); Console.WriteLine("<"); Console.WriteLine(this.Name); Console.WriteLine(">"); Console.WriteLine("it has run in "); Console.WriteLine("<"); Console.WriteLine(count.ToString()); Console.WriteLine(">"); Console.WriteLine("meters away"); Console.WriteLine("\n"); } Console.WriteLine("\n<" + this.Name + "> arrived the deadline!!"); } else { Console.WriteLine("error!"); } } } }