細(xì)說多線程(二)—— 線程的基礎(chǔ)知識(shí) |
發(fā)布時(shí)間: 2012/9/16 6:32:49 |
目錄 三、以ThreadStart方式實(shí)現(xiàn)多線程
二、線程的基礎(chǔ)知識(shí) 2.1 System.Threading.Thread類 System.Threading.Thread是用于控制線程的基礎(chǔ)類,通過Thread可以控制當(dāng)前應(yīng)用程序域中線程的創(chuàng)建、掛起、停止、銷毀。 它包括以下常用公共屬性:
2.1.1 線程的標(biāo)識(shí)符 ManagedThreadId 是確認(rèn)線程的唯一標(biāo)識(shí)符,程序在大部分情況下都是通過Thread.ManagedThreadId來辨別線程的。而Name是一個(gè)可變值,在默認(rèn)時(shí) 候,Name為一個(gè)空值 Null,開發(fā)人員可以通過程序設(shè)置線程的名稱,但這只是一個(gè)輔助功能。
2.1.2 線程的優(yōu)先級(jí)別 .NET為線程設(shè)置了Priority屬性來定義線程執(zhí)行的優(yōu)先級(jí)別,里面包含5個(gè)選項(xiàng),其中Normal是默認(rèn)值。除非系統(tǒng)有特殊要求,否則不應(yīng)該隨便設(shè)置線程的優(yōu)先級(jí)別。
2.1.3 線程的狀態(tài) 通過ThreadState可以檢測(cè)線程是處于Unstarted、Sleeping、Running 等等狀態(tài),它比 IsAlive 屬性能提供更多的特定信息。 前面說過,一個(gè)應(yīng)用程序域中可能包括多個(gè)上下文,而通過CurrentContext可以獲取線程當(dāng)前的上下文。 CurrentThread是最常用的一個(gè)屬性,它是用于獲取當(dāng)前運(yùn)行的線程。
2.1.4 System.Threading.Thread的方法 Thread 中包括了多個(gè)方法來控制線程的創(chuàng)建、掛起、停止、銷毀,以后來的例子中會(huì)經(jīng)常使用。
2.1.5 開發(fā)實(shí)例 以下這個(gè)例子,就是通過Thread顯示當(dāng)前線程信息 1 static void Main(string[] args) 2 { 3 Thread thread = Thread.CurrentThread; 4 thread.Name = "Main Thread"; 5 string threadMessage = string.Format("Thread ID:{0}\n Current AppDomainId:{1}\n "+ 6 "Current ContextId:{2}\n Thread Name:{3}\n "+ 7 "Thread State:{4}\n Thread Priority:{5}\n", 8 thread.ManagedThreadId, Thread.GetDomainID(), Thread.CurrentContext.ContextID, 9 thread.Name, thread.ThreadState, thread.Priority); 10 Console.WriteLine(threadMessage); 11 Console.ReadKey(); 12 }
運(yùn)行結(jié)果
2.2 System.Threading 命名空間 在 System.Threading命名空間內(nèi)提供多個(gè)方法來構(gòu)建多線程應(yīng)用程序,其中ThreadPool與Thread是多線程開發(fā)中最常用到的, 在.NET中專門設(shè)定了一個(gè)CLR線程池專門用于管理線程的運(yùn)行,這個(gè)CLR線程池正是通過ThreadPool類來管理。而Thread是管理線程的最 直接方式,下面幾節(jié)將詳細(xì)介紹有關(guān)內(nèi)容。
2.3 線程的管理方式 通 過ThreadStart來創(chuàng)建一個(gè)新線程是最直接的方法,但這樣創(chuàng)建出來的線程比較難管理,如果創(chuàng)建過多的線程反而會(huì)讓系統(tǒng)的性能下載。有見及 此,.NET為線程管理專門設(shè)置了一個(gè)CLR線程池,使用CLR線程池系統(tǒng)可以更合理地管理線程的使用。所有請(qǐng)求的服務(wù)都能運(yùn)行于線程池中,當(dāng)運(yùn)行結(jié)束時(shí) 線程便會(huì)回歸到線程池。通過設(shè)置,能控制線程池的最大線程數(shù)量,在請(qǐng)求超出線程最大值時(shí),線程池能按照操作的優(yōu)先級(jí)別來執(zhí)行,讓部分操作處于等待狀態(tài),待 有線程回歸時(shí)再執(zhí)行操作。 基礎(chǔ)知識(shí)就為大家介紹到這里,下面將詳細(xì)介紹多線程的開發(fā)。 億恩-天使(QQ:530997) 電話 037160135991 服務(wù)器租用,托管歡迎咨詢。 本文出自:億恩科技【mszdt.com】 服務(wù)器租用/服務(wù)器托管中國五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |