1.线程可以视为一段独立执行的程序代码段,应用程序至少会于一个或一个以上的线程中执行,多线程可以让应用程序同时进行多项工作,提高执行性能。
2..NET对于多线程提供同内置的支持,可以通过创建线程类对象,控制线程的行为,某些不支持多线程机制的程序语言,例如VB所开发的应用程序,当其执行耗时的工作时,必须暂停直到工作完成,才能继续进行下一个操作,利用创建多个线程对象,使用C#语言开发的应用程序用户,可以避免如此的窘境。
3.多线程一般用在以下几种情形:
(1)耗时的运算工作。例如复杂的数学运算,你可能需要创建新的线程对象,让应用程序进行运算的同时,在其他的线程同时进行指定的工作,避免程序呆滞,困扰用户。
(2)等待响应信息。另外一个应用多线程的地方,在于程序必须长时间等待响应,以进行下一步操作的情形,一个很典型的例子,通过网络读取文件或是下载大量数据,当你等待这些工作完成前,可以让处理器执行其它的工作,而只有在接收到工作完成响应事件时,才继续回来进行未完成的工作。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace ConsoleApplication19
{
class Program
{
static void Main(string[] args)
{
Program p = new Program();
Console.WriteLine("多线程测试开始");
p.Start();
//Thread.Sleep(2000);
Console.WriteLine("多线程测试结束[按Enter键退出]");
Console.ReadLine();
}
#region 定义并启动线程
private void Start()
{
//定义奇数线程
ThreadStart oddThreadStart = new ThreadStart(PrintOddNumber);
Thread oddThread = new Thread(oddThreadStart);
oddThread.Name = "oddThread";
//定义偶数线程
ThreadStart eventhreadStart = new ThreadStart(PrintNumber);
Thread eventhread = new Thread(eventhreadStart);
eventhread.Name = "eventhread";
//启动线程
oddThread.Start();
eventhread.Start();
oddThread.Join();
eventhread.Join();
}
#endregion
#region 输出奇数
private void PrintOddNumber()
{
for (int i = 0; i < 100;i++ )
{
if(i%2!=0)
{
Console.WriteLine(Thread.CurrentThread.Name+" "+"输出奇数:"+i);
}
}
Console.WriteLine("奇数输出完成\n");
}
#endregion
#region 输出偶数
private void PrintNumber()
{
for (int i = 0; i < 100; i++)
{
if (i % 2 == 0)
{
Console.WriteLine(Thread.CurrentThread.Name + " " + "输出偶数:" + i);
}
}
Console.WriteLine("偶数输出完成\n");
}
#endregion
}
}