多线程设计

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
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值