多執行緒是實現多工的一種方式,多個程序多個執行緒。
建立執行緒:
1.繼承thread類
子類覆蓋父類中的run方法,將執行緒執行的**存放在run中。
2.建立子類物件的同時執行緒也被建立。
3.通過呼叫start方法開啟執行緒。
執行緒的各種狀態:
1.建立狀態
在程式中用構造方法建立了乙個執行緒物件後,新的執行緒物件便處於新建狀態,此時,它已經有了相應的記憶體空間和其他資源,
但還處於不可執行狀態。新建乙個執行緒物件可採用thread類的構造方法來實現,例如「thread thread=new thread();」;
2.就緒狀態
新建執行緒物件後,呼叫該執行緒的start()方法就可以啟動執行緒。當執行緒啟動時,執行緒進入就緒狀態。此時,執行緒將進入執行緒佇列排隊,
等待cpu服務,這表明它已經具備了執行條件。
3.執行狀態
當就緒狀態的執行緒被呼叫並獲得處理器資源時,執行緒就進入了執行狀態。此時,自動呼叫該執行緒物件的run()方法。run()方法定義了該執行緒的操作和功能。
4.堵塞狀態
乙個正在執行的執行緒在某些特殊情況下,如被人為掛起或需要執行耗時的輸入/輸出操作時,將讓出cpu並暫時中止自己的執行,進入堵塞狀態。在可執行狀態下,如果呼叫sleep()、suspend()、wait()等方法,執行緒都將進入堵塞狀態。堵塞時,執行緒不能進入排隊佇列,只有當引起堵塞的原因被消除後,執行緒才可以轉入就緒狀態。
5.死亡狀態
執行緒呼叫stop()方法時或run()方法執行結束後,即處於死亡狀態。處於死亡狀態的執行緒不具有繼續執行的能力。
實現runnable介面
1.子類覆蓋介面中的run方法。
2.通過thread類建立執行緒,並將實現了runnable介面的子類物件作為引數傳遞給thread類的建構函式。
3.thread類物件呼叫start方法開啟執行緒。
執行緒的安全問題
導致安全問題的出現的原因:
多個執行緒訪問出現延遲。
執行緒隨機性。
同步 synchronization
synchr(物件){
需要同步的**;
同步的前提:
同步需要兩個或者兩個以上的執行緒。
多個執行緒使用的是同乙個鎖
同步的弊端:
當執行緒很多時,每個執行緒都會去判斷同步上的鎖,會降低程式的執行效率。
同步函式的鎖是this,而同步**塊的鎖可以是任意物件。
同步應用過多就有可能會出現死鎖,所以不要使用太過分。
因為執行緒執行**一般都是迴圈,只要控制了迴圈即可。
interr 中斷方法。
該方法是結束執行緒的凍結狀態,使執行緒回到執行狀態中來。
多執行緒學習筆記 執行緒
thread類 常用屬性 currentthread 獲取當前正在執行的執行緒 isalive 指示當前執行緒的執行狀態 isbackground 指示是否為後台執行緒 isthreadpoolthread 指示是否屬於託管執行緒池 managedthreadid 獲取執行緒識別符號 name 獲取...
多執行緒學習筆記
多執行緒的相關概念 什麼是程序?當乙個程式開始執行時,它就是乙個程序,程序包括執行中的程式和程式所使用到的記憶體和系統資源。而乙個程序又是由多個執行緒所組成的。什麼是執行緒?執行緒是程式中的乙個執行流,每個執行緒都有自己的專有暫存器 棧指標 程式計數器等 但 區是共享的,即不同的執行緒可以執行同樣的...
多執行緒學習筆記
如通過 ctrl alt 的快捷鍵 啟動任務管理器 程序,就可以看到程序,基本上在執行中的exe程式都可以看成程序。下圖是單任務與多工執行的方式,從圖中可以看出 在單任務執行環境中,後面的任務必須在前面的任務執行完之後才能進行,也就是說單任務的特點是排隊執行,也就是同步。而在多工環境中,不同的任務可...