C#多线程+委托+匿名方法+Lambda表达式

 

线程

下面是百度写的:

定义
英文:Thread
每个正在系统上运行的程序都是一个进程。每个进程包含一到多个线程。进程也可能是整个程序或者是部分程序的动态执行。线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行。也可以把它理解为代码运行的上下文。所以线程基本上是轻量级的进程,它负责在单个程序里执行多任务。通常由操作系统负责多个线程的调度和执行。
线程是程序中一个单一的顺序控制流程.在单个程序中同时运行多个线程完成不同的工作,称为多线程。

 

 

学习多线程之前,先复习一下什么叫委托。

  delegate int calculator(int a, int b);//委托类型
        static void Main(string[] args)
        {
            calculator Num = new calculator(add);
            
            Console.WriteLine(Num(1, 2));
        }

        private static int add(int a, int b)
        {
            return a + b;
        }

代码有点长,我们来想办法让代码短一点,巴啦啦能量,代码变短:

 delegate int calculator(int a, int b);//委托类型
        static void Main(string[] args)
        {
            calculator Num = delegate (int a, int b)
            {
                return a + b;
            };
            Console.WriteLine(Num(1, 2));
     }

变短了一行,这个就叫做匿名方法。那还能不能简短一点吗?

 delegate int calculator(int x, int y); //委托类型
    class Program3
    {
        static void Main()
        {
            calculator sum = (x, y) => x + y;//Lambda表达式
            Console.WriteLine(sum(1,2));
        }
    }

代码是不是简洁了点了呢? 好,接下来我们回到正题多线程编程,这里感谢一下万年锋刀志给我写了一个多线程的Demo让我学习

   Thread theader = new Thread(new ThreadStart(new Action(() =>
            {
                Thread.Sleep(2000);
                Console.WriteLine("我是新建的子线程.....");
            })));
            theader.Start();

            Console.WriteLine("我是主线程......");

            Console.ReadKey();

我们F12看下Thread有哪些用法,我们这里的案例使用了第一个方法

然后再看看为什么可以直接new ThreadStart呢?

原来 它是一个委托方法。

案例后面的new Action  也是一个原生的委托方法,作用是封装一个方法,该方法不具有参数并且不返回值。

 然后讲讲这个简单的Demo,一个Thread实例表示一个线程,每个程序都有一个主线程。我在这里新建了一个子线程,并让它睡了2秒。

就会出现第二句话延迟2秒出现。

 

这就涉及到了Thread的常用方法,下面就讲几个方法吧,

start();//启动线程

suspend();//挂起调用线程

resume();//恢复挂起线程

getId();//获得线程ID

getName();//获得线程名字

isAlive();//判断线程是否活动

isDaemon();//判断是否守护线程

getState();//获得线程状态

sleep(long mill);//休眠线程

join();//等待线程结束

about();//引发一个ThreadAbortException异常

resetAbout();取消异常终止

interrupt();//中断线程

currentThread();//获得正在执行的线程对象

所有方法可以把鼠标光标点到Demo的Sleep上,按下F12都可以查看哦。

 

整个项目的DEMO在这里

再分享一篇深入理解的文章,点击这里

转载于:https://www.cnblogs.com/xuxml/p/8493790.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值