一、多執行緒簡介
我們所說的 windows是乙個多工作業系統,是說windows能同時執行多個程式。當我們每執行乙個程式的時候其實就開啟了乙個程序,程序中包含了這個程式執行所需要的文字**、變數和動態分配的記憶體、堆疊等資源,程序之間先對獨立,乙個程序不會干擾另乙個程序的執行。在.net中程序可以包含多個應用程式域和執行緒,應用程式域是乙個邏輯區域(不做詳細介紹)。執行緒是程序中的基本執行單元,執行緒可以幫乙個程序同時做多件事,執行緒主要由執行緒id,當前指令指標(pc),暫存器集合和堆疊組成,同一程序的多個執行緒可以在巨集觀上併發的執行,但在微觀上cpu同時只能執行乙個執行緒,所以執行緒也就有了就緒,阻塞,執行三種狀態,具體cpu執行那個執行緒這由
系統根據執行緒的優先順序決定。程式入口的執行緒叫主線程,在.net中就是main()方法作為入口的,呼叫main()方法系統就會建立乙個主線程。
所謂多執行緒就是在乙個程序內執行多個執行緒來協同完成工作,這樣能在一定程度上提高程式的效能,最明顯的就是在做winform開發的時候,如果不用多執行緒,當我們處理資料的時候程式介面是卡死的,這就是因為在只有乙個執行緒的時候,處理資料的和ui是在乙個執行緒(主線程)中,但處理資料的時候這個執行緒是不會去處理前台ui的,所以我們會感覺程式卡死了。多執行緒的缺點就是cpu要花時間來處理要執行那個執行緒.....
二、.net多執行緒操作
在.net中操作多執行緒就必須用到thread類了,thread包含在system.threading命名空間中。system.threading命名空間包含了多執行緒所需要的類庫,其中thread和threadpool是經常用到的。建立多執行緒就是同多thread提供的方法執行方法的委託。在.net中建立執行緒最簡單的方法就是用thread的threadstart委託開啟新的執行緒,threadstart委託定義為public delegate void threadstart(),就是說該委託只能接受返回值為void並且沒有引數的方法,當然如果要多執行緒執行帶有引數的可以使用parameterizedthreadstart委託,能接受返回值為void引數為object的引數。
1、通過thread常用到的屬性和方法
屬性:
currentcontext
獲取執行緒正在其中執行的當前上下文。
currentthread 獲取當前正在執行的執行緒。
isalive
獲取乙個值,該值指示當前執行緒的執行狀態。
isbackground
獲取或設定乙個值,該值指示某個執行緒是否為後台執行緒。
managedthreadid 獲取當前託管執行緒的唯一識別符號。
name 獲取或設定執行緒的名稱。,可以沒有。
priority 獲取或設定乙個值,該值指示執行緒的排程優先順序。。
threadstate 獲取乙個值,該值包含當前執行緒的狀態。
方法:
abort() 終止本執行緒。
join()
阻塞呼叫執行緒,直到某個執行緒終止時為止。
resume() 繼續執行已掛起的執行緒。
start() 執行本執行緒。
suspend() 掛起當前執行緒,如果當前執行緒已屬於掛起狀態則此不起作用。
sleep() 把正在執行的執行緒掛起一段時間。
2、通過threadstart建立執行緒
1class
program222
}23console.readkey();24}
25 }
1執行結果是class
person24
public
void
message()517
//執行緒掛起500毫秒
18 thread.sleep(500
);19
if (i > 30)20
24}25}
26 }
可見執行person類message方法的執行緒和主線程在並行的執行。
多執行緒學習筆記 執行緒
thread類 常用屬性 currentthread 獲取當前正在執行的執行緒 isalive 指示當前執行緒的執行狀態 isbackground 指示是否為後台執行緒 isthreadpoolthread 指示是否屬於託管執行緒池 managedthreadid 獲取執行緒識別符號 name 獲取...
多執行緒學習筆記
多執行緒的相關概念 什麼是程序?當乙個程式開始執行時,它就是乙個程序,程序包括執行中的程式和程式所使用到的記憶體和系統資源。而乙個程序又是由多個執行緒所組成的。什麼是執行緒?執行緒是程式中的乙個執行流,每個執行緒都有自己的專有暫存器 棧指標 程式計數器等 但 區是共享的,即不同的執行緒可以執行同樣的...
多執行緒學習筆記
多執行緒是實現多工的一種方式,多個程序多個執行緒。建立執行緒 1.繼承thread類 子類覆蓋父類中的run方法,將執行緒執行的 存放在run中。2.建立子類物件的同時執行緒也被建立。3.通過呼叫start方法開啟執行緒。執行緒的各種狀態 1.建立狀態 在程式中用構造方法建立了乙個執行緒物件後,新的...