线程
下面是百度写的:
定义
英文: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在这里
再分享一篇深入理解的文章,点击这里