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

线程

下面是百度写的:

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

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

  delegate int calculator(int a, int b);//委托类型
static void Main(string[] args)
{
calculator Num = new calculator(add); Console.WriteLine(Num(, ));
} 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(, ));
     }

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

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

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

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

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

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

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

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

原来 它是一个委托方法。

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

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

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

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

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

start();//启动线程

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

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

getId();//获得线程ID

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

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

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

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

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

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

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

resetAbout();取消异常终止

interrupt();//中断线程

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

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

整个项目的DEMO在这里

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

上一篇:Pandas系列之入门篇


下一篇:android - DefaultHttpClient设置超时.