多執行緒細節講解

2022-03-17 07:03:03 字數 1330 閱讀 7041

一般run方法執行完,執行緒應該正常結束,但是常常有些執行緒是伺服執行緒(即只有獲得某種訊號,才會停止的執行緒)最常見的就是在while迴圈當中的執行緒,設定乙個boolean型別的標誌,來退出迴圈。

之所以使用volatile關鍵字,是為了是exit同步。

執行緒處於阻塞狀態,呼叫interrupt方法,捕獲異常,利用break跳出迴圈,才能結束執行緒

執行緒處於非阻塞狀態。使用isinterrupted判斷執行緒的中斷標誌退出迴圈。

程式中可以直接使用thread.stop來強行終止執行緒,但是這種方法是非常危險的,就像突然關閉計算機電源。一旦呼叫stop方法,執行緒會釋放所持有的所有鎖。這個時候資料是不受保護的,其他執行緒進來很可能會觸發一些奇怪的錯誤。

首先sleep屬於thread類,wait方法屬於object類

sleep方法導致程式暫停執行指定的時間,讓出cpu給其他執行緒,但是他的監控狀態依然保持著,當指定時間到了又會自動回覆執行狀態。

sleep不會釋放物件鎖,wait會釋放物件鎖,進入等待此物件的等待鎖定池,只有針對此物件呼叫notify方法後本執行緒才會進入物件鎖定池準備獲取物件鎖進入執行狀態。

start方法啟動執行緒,真正實現了多執行緒執行。這時無需等待run方法體**執行完畢,可以直接繼續執行下面的**。『

start方法啟動執行緒,是處於就緒狀態,並沒有執行

run方法稱為執行緒體,包含了執行緒要執行的內容,執行緒進入執行狀態,執行run函式當中的**。run方法執行結束,執行緒終止。然後cpu再排程其他執行緒。

定義:守護執行緒————「服務執行緒」,他是後台執行緒,有乙個特性,即為使用者執行緒提供公共服務,在沒有使用者執行緒可服務時會自動離開。

優先順序:優先順序比較低,用於為系統中的其他物件和執行緒提供服務。

設定:通過setdaemon(ture)來設定執行緒為守護執行緒。講乙個使用者執行緒變為守護執行緒的方法就是在建立物件前,呼叫物件的setdaemon方法。

在daemon中產生的新執行緒也是daemon的。

執行緒則是jvm級別的,在web應用中使用的執行緒,在web應用停止後,依然是活躍的。

垃圾**執行緒就是乙個典型的守護執行緒。當程式中不再有任何執行的執行緒,就不會再產生垃圾,垃圾**器也就無事可做,垃圾**器就會自動離開。

生命週期:守護執行緒獨立於控制終端並且週期性的執行某種任務或等待處理某些發生的事情。也就是說守護執行緒不依賴於終端,但是依賴於系統,與系統同生共死。當jvm中都是守護執行緒的時候,jvm就可以推出了。

多執行緒講解

using system using system.threading using system.windows.forms namespace threadtest private void form1 load object sender,eventargs e private void but...

多執行緒細節解析

在學習完多執行緒後,分析一下一下兩種方法建立4個執行緒的不同之處!建立執行緒方法1 public static void main 建立執行緒方法2 public static void main 方法1和方法2都是建立了4個執行緒,類mythread實現了runnable介面 方法1是用for迴圈...

多執行緒程式設計細節

多執行緒程式設計細節 thread類 thread類實現了runnable介面,所以thread物件也是可執行runnable物件,同時thread類也是執行緒類 構造器常見方法 runnable介面 runnable介面只定義了乙個方法public void run 這個方法要求實現runnabl...