線程
下面是百度寫的:
定義
英文: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在這里
再分享一篇深入理解的文章,點擊這里
