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