C#多线程的使用

来源:互联网 发布:柏柏尔人 知乎 编辑:程序博客网 时间:2024/05/16 14:02
 
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!");
            }
            
        }
    }
 
 
 
 
 
}
原创粉丝点击