電子課件章線程基本操作_第1頁
電子課件章線程基本操作_第2頁
電子課件章線程基本操作_第3頁
電子課件章線程基本操作_第4頁
電子課件章線程基本操作_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

線程的基本操作本講大綱:1、線程基礎(chǔ)——Thread類支持網(wǎng)站:2、線程的創(chuàng)建3、線程的掛起與恢復(fù)4、線程休眠5、終止線程6、線程的優(yōu)先級線程基礎(chǔ)——Thread類

Thread類位于System.Threading命名空間下,System.Threading命名空間提供一些使得可以進行多線程編程的類和接口。除同步線程活動和訪問數(shù)據(jù)的類(Mutex、Monitor、Interlocked和AutoResetEvent等)外,該命名空間還包含一個ThreadPool類(它允許用戶使用系統(tǒng)提供的線程池)和一個Timer類(它在線程池線程上執(zhí)行回調(diào)方法)。Thread類主要用于創(chuàng)建并控制線程、設(shè)置線程優(yōu)先級并獲取其狀態(tài)。一個進程可以創(chuàng)建一個或多個線程以執(zhí)行與該進程關(guān)聯(lián)的部分程序代碼,線程執(zhí)行的程序代碼由ThreadStart委托或ParameterizedThreadStart委托指定。線程運行期間,不同的時刻會表現(xiàn)為不同的狀態(tài),但它總是處于由ThreadState定義的一個或多個狀態(tài)中。用戶可以通過使用ThreadPriority枚舉為線程定義優(yōu)先級,但不能保證操作系統(tǒng)會接受該優(yōu)先級。屬性說明CurrentThread獲取當前正在運行的線程IsAlive獲取一個值,該值指示當前線程的執(zhí)行狀態(tài)Name獲取或設(shè)置線程的名稱Priority獲取或設(shè)置一個值,該值指示線程的調(diào)度優(yōu)先級ThreadState獲取一個值,該值包含當前線程的狀態(tài)方法說明Abort在調(diào)用此方法的線程上引發(fā)ThreadAbortException,以開始終止此線程的過程。調(diào)用此方法通常會終止線程Join阻止調(diào)用線程,直到某個線程終止時為止ResetAbort取消為當前線程請求的AbortResume繼續(xù)已掛起的線程Sleep將當前線程阻止指定的毫秒數(shù)Start使線程被安排進行執(zhí)行Suspent掛起線程,或者如果線程已掛起,則不起作用線程的創(chuàng)建

創(chuàng)建一個線程非常簡單,只需將其聲明并為其提供線程起始點處的方法委托即可。創(chuàng)建新的線程時,需要使用Thread類,Thread類具有接受一個ThreadStart委托或ParameterizedThreadStart委托的構(gòu)造函數(shù),該委托包裝了調(diào)用Start方法時由新線程調(diào)用的方法。創(chuàng)建了Thread類的對象之后,線程對象已存在并已配置,但并未創(chuàng)建實際的線程,這時,只有在調(diào)用Start方法后,才會創(chuàng)建實際的線程。

Start方法用來使線程被安排進行執(zhí)行,它有兩種重載形式,下面分別介紹。(1)導(dǎo)致操作系統(tǒng)將當前實例的狀態(tài)更改為ThreadState.Running。語法:publicvoidStart()(2)使操作系統(tǒng)將當前實例的狀態(tài)更改為ThreadState.Running,并選擇提供包含線程執(zhí)行的方法要使用的數(shù)據(jù)的對象。語法:publicvoidStart(Objectparameter)說明:parameter表示一個對象,包含線程執(zhí)行的方法要使用的數(shù)據(jù)。線程的掛起與恢復(fù)線程的掛起與恢復(fù)分別可以通過調(diào)用Thread類中的Suspend方法和Resume方法實現(xiàn),

1.Suspend方法該方法用來掛起線程,如果線程已掛起,則不起作用,語法如下。

publicvoidSuspend()說明:調(diào)用Suspend方法掛起線程時,.NET允許要掛起的線程再執(zhí)行幾個指令,目的是為了到達.NET認為線程可以安全掛起的狀態(tài)。2.Resume方法該方法用來繼續(xù)已掛起的線程,語法如下。

publicvoidResume()說明:通過Resume方法來恢復(fù)被暫停的線程時,無論調(diào)用了多少次Suspend方法,調(diào)用Resume方法均會使另一個線程脫離掛起狀態(tài),并導(dǎo)致該線程繼續(xù)執(zhí)行。線程休眠線程休眠主要通過Thread類的Sleep方法實現(xiàn),該方法用來將當前線程阻止指定的時間,它有兩種重載形式,下面分別進行介紹。(1)將當前線程掛起指定的時間,語法如下。

publicstaticvoidSleep(intmillisecondsTimeout)millisecondsTimeout:線程被阻止的毫秒數(shù)。指定零以指示應(yīng)掛起此線程以使其他等待線程能夠執(zhí)行,指定Infinite以無限期阻止線程。(2)將當前線程阻止指定的時間,語法如下。

publicstaticvoidSleep(TimeSpantimeout)timeout:線程被阻止的時間量的TimeSpan。指定零以指示應(yīng)掛起此線程以使其他等待線程能夠執(zhí)行,指定Infinite以無限期阻止線程。例如:

Thread.Sleep(1000); //使線程休眠一秒鐘終止線程終止線程可以分別使用Thread類的Abort方法和Join方法實現(xiàn),下面對這兩個方法進行詳細介紹。1.Abort方法它的兩種重載方式如下:

publicvoidAbort()publicvoidAbort(ObjectstateInfo)stateInfo:一個對象,它包含應(yīng)用程序特定的信息(如狀態(tài)),該信息可供正被終止的線程使用。2.Join方法它的3種重載方式如下:

publicvoidJoin()publicboolJoin(intmillisecondsTimeout)publicboolJoin(TimeSpantimeout)millisecondsTimeout:等待線程終止的毫秒數(shù)。timeout:等待線程終止的時間量的TimeSpan。線程的優(yōu)先級

線程優(yōu)先級指定一個線程相對于另一個線程的相對優(yōu)先級。每個線程都有一個分配的優(yōu)先級。在公共語言運行庫內(nèi)創(chuàng)建的線程最初被分配為Normal優(yōu)先級,而在公共語言運行庫外創(chuàng)建的線程,在進入公共語言運行庫時將保留其先前的優(yōu)先級。線程是根據(jù)其優(yōu)先級而調(diào)度執(zhí)行的,用于確定線程執(zhí)行順序的調(diào)度算法隨操作系統(tǒng)的不同而不同。在某些操作系統(tǒng)下,具有最高優(yōu)先級(相對于可執(zhí)行線程而言)的線程經(jīng)過調(diào)度后總是首先運行。如果具有相同優(yōu)先級的多個線程都可用,則程序?qū)⒈闅v處于該優(yōu)先級的線程,并為每個線程提供一個固定的時間片來執(zhí)行。只要具有較高優(yōu)先級的線程可以運行,具有較低優(yōu)先級的線程就不會執(zhí)行。如果在給定的優(yōu)先級上不再有可運行的線程,則程序?qū)⒁频较乱粋€較低的優(yōu)先級并在該優(yōu)先級上調(diào)度線程以執(zhí)行。如果具有較高優(yōu)先級的線程可以運行,則具有較低優(yōu)先級的線程將被搶先,并允許具有較高優(yōu)先級的線程再次執(zhí)行。除此之外,當應(yīng)用程序的用戶界面在前臺和后臺之間移動時,操作系統(tǒng)還可以動態(tài)調(diào)整線程優(yōu)先級。開發(fā)人員可以通過訪問線程的Priority屬性來獲取和設(shè)置其優(yōu)先級。Priority屬性用來獲取或設(shè)置一個值,該值指示線程的調(diào)度優(yōu)先級。語法:publicThreadPriorityPriority{get;set;}說明:屬性值為ThreadPriority類型的枚舉值之一,默認值為Normal。優(yōu)先級值說明AboveNormal可以將Thread安排在具有Highest優(yōu)先級的線程之后,在具有Normal優(yōu)先級的線程之前BelowNormal可以將Thread安排在具有Normal優(yōu)先級的線程之后,在具有Lowest優(yōu)先級的線程之前Highest可以將Thread安排在具

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論