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