现在的位置: 首页 > 综合 > 正文

多线程设计

2014年03月10日 ⁄ 综合 ⁄ 共 1795字 ⁄ 字号 评论关闭

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
    }
}

抱歉!评论已关闭.