多线程1-认识线程

  1.线程示例:   

在计算机世界,一些计算工作是可以同时进行的,这样提升了运行的效率,这就是多线程的优势。举一个不太恰当的例子,假设生活中,我们需要做家务。假设有4个房间需要整理,如果只有我自己,那么我需要逐个整理4个房间。假设我找到了另外一个人帮忙,没人整理2个房间,这样的效率就提升了一倍。

      这个例子中,我是一个主线程,由我来发起工作。另外的人去做什么,怎么做,由我来指定。下面是一个多线程示例:

using System;
using System.Threading;

namespace ConcurrentCSharp
{
    class Program
    {
        static void Main(string[] args)
        {
            Thread t = new Thread(PrintNum);
            t.Name = "Thread t";
            t.Start();          


            Console.WriteLine("Main thread", Thread.CurrentThread.Name);
        }
        static void PrintNum()
        {
            Console.WriteLine("Thread t starting...");
            for(int i=1;i<10;i++)
            {
                Console.WriteLine("{0},{1}",Thread.CurrentThread.Name,i);
            }
        }
    }
}

        程序有入口main进来,自身是一个主线程。由于它一个人做不完,于是它声明了一个线程Thread t实例来帮忙。这个线程去做什么呢。它去打印一些数字。主线程在这个实例工作的时候,自己还可以去做其他的事情,两者可以同时进行。最终运行的结果是,我们知道哪些工作是线程来做的,哪些是主线程来做的。运行效果如下:

        当然,我们可以初始化很多线程(请很多人帮忙),这样工作可以更快完成。当然这个与操作系统资源有关。如果太多,操作系统不断切换线程,也是很浪费资源 

2.暂停线程

     通过Thread.Sleep(TimeSpan.FromSeconds(10))代码,可以暂停当前线程运行10秒。有时候计算太占用CPU时间片,我们需要等待一下,让cpu可以空闲去执行一些其他操作,避免让当前线程占用全部的资源;

3.线程等待

    用刚才那个收拾房间的例子就是,假设我请了一个人帮忙。但是他可能做得很快,也可能做得很慢。我需要在他做完的时候,才进行下一步的工作。那么通过sleep是不妥的,以为可能做得很快,有可能做得慢。这与计算机的性能存在关联。这个时候,需要通过Thread 实例,调用Join来完成等待。主线程调用子线程t.Join()后,主线程阻塞。直到子线程t执行完成以后。主线程才可以继续执行。

本节结束,下一节,我们将线程终止及检测线程的状态等

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值