。如通過 ctrl + alt + .的快捷鍵 ->啟動任務管理器 -> 程序,就可以看到程序,基本上在執行中的exe程式都可以看成程序。
下圖是單任務與多工執行的方式,從圖中可以看出:在單任務執行環境中,後面的任務必須在前面的任務執行完之後才能進行,也就是說單任務的特點是排隊執行,也就是同步。而在多工環境中,不同的任務可以同時進行,即使用多執行緒後可以在同一時間內執行更多不同種類的任務。由此可以得出:但任務環境的缺點是,cpu利用率很低。多執行緒技術的優點是非同步執行多個任務,大大地提高cpu利用率。
注意:多執行緒是非同步的,所以千萬不要把eclipse中**的順序當成執行緒執行的順序,執行緒被呼叫的時機是隨機的。
乙個程序在執行時至少會有乙個執行緒在執行,比如呼叫public static void main(string args)方法時,jvm就會建立乙個相應的執行緒在後台摸摸地執行。
實現多執行緒程式設計的方式主要有兩種:繼承thread類和實現runnable介面。
執行緒安全和資料共享的兩個示例:
package org.sym.threadsafe;
/** * 本程式使用synchronized關鍵字修飾方法,保證多執行緒在對類物件的同乙個變數進行修改時,能夠按順序獲取該同步鎖,保證值修改的一致性
*@author sym
*@since 2018.3.11 21:46
* */
class mythread01 extends thread
}public
class
synchronizedthread01
}
其中一次的執行結果如下。從結果中可以看到:雖然使用關鍵字synchronized修飾方法,可以保證方法中變數修改的一致性,但是由於執行緒被呼叫的時機是隨機的,所以使用多執行緒技術時,**的執行結果與**的執行順序或呼叫順序是無關的(本例中從前面的執行緒名的順序與呼叫的執行緒順序不一致可以看出)。
另乙個執行緒安全的例項:
package org.sym.threadsafe;
/** * 本程式使用synchronized關鍵字修飾方法,表示要想執行該同步方法必須先要拿到這把鎖,
* 這樣當有多個執行緒對該類的同乙個物件中的同乙個變數進行操作時,就不會出現只修改後不同步的「非執行緒安全」現象
* @author sym
* @version v1.0
* @since 2018.3.11 21:26
* */
//本類模擬成乙個servlet元件
class
loginservlet
passwordref = password;
system.out.println("username = " + usernameref + " password = " + password);
//雖然使用synchronized關鍵字修飾方法,可以保證對其中變數修改的一致性,但並不能保證執行緒呼叫順序按照執行緒例項化的順序執行
}catch(interruptedexception e)
}}class
alogin
extends
thread
}class
blogin
extends
thread
}public class
synchronizedthread02
}
其中一次執行的結果:
注意:雖然使用synchronized關鍵字修飾方法,可以保證對其中變數修改的一致性,但並不能保證執行緒呼叫順序按照執行緒例項化的順序執行
多執行緒學習筆記 執行緒
thread類 常用屬性 currentthread 獲取當前正在執行的執行緒 isalive 指示當前執行緒的執行狀態 isbackground 指示是否為後台執行緒 isthreadpoolthread 指示是否屬於託管執行緒池 managedthreadid 獲取執行緒識別符號 name 獲取...
多執行緒學習筆記
多執行緒的相關概念 什麼是程序?當乙個程式開始執行時,它就是乙個程序,程序包括執行中的程式和程式所使用到的記憶體和系統資源。而乙個程序又是由多個執行緒所組成的。什麼是執行緒?執行緒是程式中的乙個執行流,每個執行緒都有自己的專有暫存器 棧指標 程式計數器等 但 區是共享的,即不同的執行緒可以執行同樣的...
多執行緒學習筆記
多執行緒是實現多工的一種方式,多個程序多個執行緒。建立執行緒 1.繼承thread類 子類覆蓋父類中的run方法,將執行緒執行的 存放在run中。2.建立子類物件的同時執行緒也被建立。3.通過呼叫start方法開啟執行緒。執行緒的各種狀態 1.建立狀態 在程式中用構造方法建立了乙個執行緒物件後,新的...