zytt2314

【转】C#多线程示例

using System;

using System.Threading;

namespace ConsoleThread

{

         class ThreadApp

         {

                   static int interval;

                   static void DisplayNumbers()

                  {

                            // 获取当前运行线程的Thread对象实例

                            Thread thisThread = Thread.CurrentThread;

                            Console.WriteLine("线程: "+ thisThread.Name + " 已开始运行.");

                            // 循环计数直到结束,在指定的间隔输出当前计数值

                            for(int i = 1; i <= 8*interval; i++)

                            {

                                     if(i%interval == 0)

                                     {

                                               Console.WriteLine(thisThread.Name + ": 当前计数为 " + i);

                                     }

                            }

                            Console.WriteLine("线程 " + thisThread.Name + " 完成.");

                   }

       

static void Main(string[] args)

                   {

                            // 获取用户输入的数字

                            Console.Write("请输入一个数字:");

                            interval = int.Parse(Console.ReadLine());

                            // 定义当前主线程线程对象的名字

                            Thread thisThread = Thread.CurrentThread;

                            thisThread.Name = "Main Thread";

                            // 建立新线程对象

                            ThreadStart workerStart = new ThreadStart(DisplayNumbers);

                            Thread workerThread = new Thread(workerStart);

                            workerThread.Name = "Worker Thread";

workerThread.IsBackground = true;

                            // 启动新线程

                            workerThread.Start();

                            // 主线程同步进行计数

                            DisplayNumbers();

                   }

         }

}

运行结果:

请输入一个数字:100

线程: Main Thread 已开始运行.

Main Thread: 当前计数为 100

Main Thread: 当前计数为 200

Main Thread: 当前计数为 300

Main Thread: 当前计数为 400

Main Thread: 当前计数为 500

Main Thread: 当前计数为 600

Main Thread: 当前计数为 700

Main Thread: 当前计数为 800

线程 Main Thread 完成.

线程: Worker Thread 已开始运行.

Worker Thread: 当前计数为 100

Worker Thread: 当前计数为 200

Worker Thread: 当前计数为 300

Worker Thread: 当前计数为 400

Worker Thread: 当前计数为 500

Worker Thread: 当前计数为 600

Worker Thread: 当前计数为 700

Worker Thread: 当前计数为 800

线程 Worker Thread 完成.

 

请输入一个数字:1000000

线程: Main Thread 已开始运行.

Main Thread: 当前计数为 1000000

Main Thread: 当前计数为 2000000

Main Thread: 当前计数为 3000000

Main Thread: 当前计数为 4000000

Main Thread: 当前计数为 5000000

线程: Worker Thread 已开始运行.

Worker Thread: 当前计数为 1000000

Worker Thread: 当前计数为 2000000

Worker Thread: 当前计数为 3000000

Main Thread: 当前计数为 6000000

Main Thread: 当前计数为 7000000

Worker Thread: 当前计数为 4000000

Worker Thread: 当前计数为 5000000

Main Thread: 当前计数为 8000000

线程 Main Thread 完成.

Worker Thread: 当前计数为 6000000

Worker Thread: 当前计数为 7000000

Worker Thread: 当前计数为 8000000

线程 Worker Thread 完成.

 

在【例】中,对Main()方法做如下修改,就可以看出修改线程的优先级的效果:

// 建立新线程对象

ThreadStart workerStart = new ThreadStart(DisplayNumbers);

Thread workerThread = new Thread(workerStart);

workerThread.Name = "Worker Thread";

workerThread.Priority = AboveNormal;

 

请输入一个数字:1000000

线程: Main Thread 已开始运行.

Main Thread: 当前计数为 1000000

Main Thread: 当前计数为 2000000

Main Thread: 当前计数为 3000000

Main Thread: 当前计数为 4000000

Main Thread: 当前计数为 5000000

Main Thread: 当前计数为 6000000

线程: Worker Thread 已开始运行.

Worker Thread: 当前计数为 1000000

Worker Thread: 当前计数为 2000000

Worker Thread: 当前计数为 3000000

Worker Thread: 当前计数为 4000000

Worker Thread: 当前计数为 5000000

Worker Thread: 当前计数为 6000000

Worker Thread: 当前计数为 7000000

Worker Thread: 当前计数为 8000000

线程 Worker Thread 完成.

Main Thread: 当前计数为 7000000

Main Thread: 当前计数为 8000000

线程 Main Thread 完成.

 

在DisplayNumbers()方法的循环体中加上一句代码,:

if(i%interval == 0)

{

         Console.WriteLine(thisThread.Name + ": 当前计数为 " + i);

         Thread.Sleep(10);             // 让当前工作线程暂停10毫秒

}

现在来看运行结果:

请输入一个数字:1000000

线程: Main Thread 已开始运行.

Main Thread: 当前计数为 1000000

线程: Worker Thread 已开始运行.

Worker Thread: 当前计数为 1000000

Main Thread: 当前计数为 2000000

Main Thread: 当前计数为 3000000

Worker Thread: 当前计数为 2000000

Main Thread: 当前计数为 4000000

Worker Thread: 当前计数为 3000000

Worker Thread: 当前计数为 4000000

Main Thread: 当前计数为 5000000

Worker Thread: 当前计数为 5000000

Worker Thread: 当前计数为 6000000

Main Thread: 当前计数为 6000000

Worker Thread: 当前计数为 7000000

Worker Thread: 当前计数为 8000000

线程 Worker Thread 完成.

Main Thread: 当前计数为 7000000

Main Thread: 当前计数为 8000000

线程 Main Thread 完成.

 

posted on 2013-12-22 10:00  zytt2314  阅读(159)  评论(0)    收藏  举报