多執行緒的總體概括和總結

2022-02-05 02:23:05 字數 2399 閱讀 8268

1.為什麼要用多執行緒

(1) 讓計算機」同時」做很多事情,節約時間。

(2) 後台執行程式,提高程式的執行效率,也不會使主介面出現無響應的情況。

(3) 多執行緒可以讓乙個程式來「同時」處理多個事情。

(4) 計算機cpu大部分時間處於空閒狀態,浪費了cpu資源。

程序與執行緒(圖示說明)

(1) 乙個程序至少有乙個執行緒

(2) 同乙個程序中的多個執行緒之間可以「併發執行」。

(3) 執行緒是程式中的乙個執行流,每個執行緒都有自己的專有暫存器(棧指標,程式計數器等),但**區是共享的,即不同的執行緒可以執行同樣的函式。多執行緒是指程式中包含多個執行流,即在乙個程式中可以同時執行多個不同的執行緒來執行不同的任務(**),也就是說允許單個程式建立多個並行執行的執行緒來完成各自的任務。

.net中如何實現多執行緒

(1) 執行緒肯定也是要執行一段**的,所以要產生乙個執行緒,必須先為該執行緒寫乙個方法,這個方法中的**就是該執行緒執行所要執行的**。(找個人來做事情)。

(2) 執行緒啟動時,通過委託呼叫該方法。(執行緒啟動時,呼叫傳過來的委託,委託就會執行相應的方法,實現執行緒執行方法)。

產生乙個執行緒的四個步驟

(1) 編寫產生執行緒所要執行的方法

(2) 引用system.threading命名空間

(3) 例項化threading類,並傳入乙個指向執行緒所要執行方法的委託(這時候這個執行緒已經產生,但是還沒有執行)。

(4) 呼叫thread例項的start方法,標記該執行緒可以被cpu執行了,但具體執行時間由cpu決定。

例題:如圖所示,演示了多執行緒的一些特性,下面詳細介紹實現**:

(1)    在單執行緒的缺點的事件下面實現的**是,先定義乙個方法,實現99999的迴圈遞增,在在單執行緒的缺點按鈕的事件下面呼叫此方法,**如下:定義方法:

private void counttime()

timespan ts = begintime.subtract(datetime.now);

messagebox.show("迴圈完畢"+ts.milliseconds);

}這個**的執行過程是:當使用者單擊按鈕的時候,將會觸發事件,接著cpu就會處理這個事件,這時候不管我們如何拖動窗體或者單擊某個地方都不會有反應,直到這個事件執行完畢才會有反應。怎麼樣來解決這個問題呢,我們就是用到了多執行緒。

(2)    在多執行緒的解決按鈕的事件下面的**時:

//使用多執行緒來解決ui卡死問題

private void btnmulthread_click(object sender, eventargs e)

此**的執行過程是:解決了上面我們所提到的問題,這次當我們單擊此控制項事件的時候,我們可以在幹任何事情,因為是多執行緒的程式。

前台執行緒和後台執行緒

(1) 前台程式:只有所有的前台執行緒都關閉才能完成程式關閉。

(2) 後台程式:只有所有的前台執行緒結束,後台執行緒自動結束。

thread類的一些重要成員(*)

(1) start() 啟動執行緒

(2) abort() 終止執行緒

(3) thread.sleep(1) 靜態方法,可以是當前執行緒停止一段時間在執行。

(4) name 執行緒名

(4) thread.currentthread  獲得當前的執行緒引用

多執行緒實現帶引數的方法

(1) 如上圖所示:在圖上面有個多執行緒執行帶引數的方法的按鈕,在此按鈕的事件下面實現的**是:先定義乙個方法,實現獲取使用者所輸入的資訊的程式**:

private void showtxtname(object name)

else

}然後再控制項的事件下面呼叫的方法所實現的**是:

private void btnthreadwithpara_click(object sender, eventargs e)

多執行緒實現帶多個引數的方法

(1) 多執行緒實現帶多個引數的方法的程式**是:定義乙個陣列或者集合實現此方法,如上圖有多執行緒實現帶多個引數的方法的按鈕,在此按鈕的事件下面實現的**是:

先定義乙個方法,用陣列或者集合實現獲取輸入的名字:**如下:

private void showtxtmanyname(object li)}}

然後再此按鈕的事件下面所實現的方法的的**是:

private void btnthreadmanypara_click(object sender, eventargs e));}

多執行緒的總結

今天學習了關於多執行緒的有關知識,主要涉及到幾個概念的理解,物件鎖 sleep wait notify notifyall。物件鎖 每個物件都有物件鎖,當某個執行緒進入用synchronized定義方法時,就獲得了當前類物件 方法所屬的類的物件 的鎖,其他執行緒就不能再獲得該鎖,直到執行緒釋放該鎖。...

多執行緒的總結

多執行緒 指的是這個程式 乙個程序 執行時產生了不止乙個執行緒 並行與併發 o 並行 多個cpu例項或者多台機器同時執行一段處理邏輯,是真正的同時。o 併發 通過cpu排程演算法,讓使用者看上去同時執行,實際上從cpu操作層面不是真正的同時。併發往往在場景中有公用的資源,那麼針對這個公用的資源往往產...

多執行緒總結

多執行緒的重要性和作用我就不做說明了。直接進入正題,整理下,整理了下網上的若干資源,寫得很好的 一 首先不用說是msdn 1.system.threading 命名空間 system.threading命名空間提供一些使得可以進行多執行緒程式設計的類和介面。除同步執行緒活動和訪問資料的類 mutex...