程序和執行緒的概念以及如何創造執行緒

2021-06-22 05:16:59 字數 1833 閱讀 4234

1:計算機的cpu承擔了所有的任務,他就像一座工廠,時刻在執行。

2:cpu一次只能執行乙個任務,我們可以假定工廠的電力有限,一次只能供給乙個車間使用,也就是說乙個車間開工時,其他車間都必須停工。

3:程序就好比工廠的車間,它代表著cpu所能處理的單個任務。任一時刻,cpu總是執行乙個程序,其他程序處於非執行狀態。

4:乙個車間裡有很多任務人,他們協同完成乙個任務,執行緒就好比車間裡的工人,乙個程序包括了多個執行緒。

綜上所述:

a:程序是程式在某個資料集上的執行,他是乙個動態的實體,它有自己的生命週期。它因建立而產生,因排程而執行,因等待資源或事件而處於等待狀態,因任務完成任務而被銷毀。

b:執行緒是乙個程式裡的不同執行路徑,以前說編寫的程式,每個程式都有乙個入口,乙個出口,以及順序的執行點,事實上,在單個程式的內部是可以在同一時刻進行多種運算的,這就是所謂的多執行緒。

多執行緒的優點:

多執行緒程式設計簡單,效率高(能直接共享資料和資源,多程序不能做到),適合開發服務程式(如:web服務,聊天服務)。

建立執行緒!

方法一:

1:建立乙個繼承thread的類(如類a),並重寫thread中的run()方法。

2:建立類a的物件(如 a)。

3:呼叫start()方法【start()方法是從thread繼承過來的】.

/*

* 建立乙個類繼承thread

*/class a extends thread }}

public class threadtest1

}}

程式執行的結果:

從圖中可以發現,即使類a中有個死迴圈,但是依然輸出了「我好~~~」,這就說明,多執行緒可以執行乙個程式的多條路徑。

注意:1:物件呼叫的是.start()方法而不是.run()方法,如果呼叫run()方法,程式就變成單執行緒了,還是會順序執行。

2:呼叫.start()方法後並不表示物件對應的執行緒就一定會立即得到執行,執行完後只代表該物件具有了被cpu執行的資格,但由於想搶占執行的執行緒很多,cpu不一定會立即去執行。

3:乙個thread物件能且只能代表乙個執行緒,乙個thread物件不能呼叫兩次start()方法,否則會丟擲異常。

執行緒狀態的切換:

從圖中就可以看出,呼叫start()之後,只是進入就緒狀態,並不是執行狀態。

方法二:

1:定義乙個類(如類a),並實現runnable介面。

2:建立a的物件a。

3:利用a構造乙個thread物件thread。

4:呼叫thread中的start()方法。

/**

* 建立乙個類實現runnable介面

* @author liao

* */

class a implements runnable

} }public class threadtest2

}}

程序和執行緒的概念

什麼是程式?什麼是程序?程式和程序有什麼關係?程式是計算機儲存系統中的資料檔案 程序的概念 廣義概念 程式關於某個資料集合一次執行活動 狹義概念 程式被載入到記憶體中執行後得到的程序 程式和程序的區別 程式是硬碟中靜態的檔案 儲存系統中的一段二進位制二進位制表示 程序是記憶體中動態的執行實體 資料段...

程序和執行緒之間的概念以及多執行緒的優點

程序 程序可以理解為乙個正在執行的程式,每乙個執行的程式都是乙個程序。執行緒 執行緒可以為在程序中執行的子任務,乙個程序可以有n個執行緒 n 1 多執行緒的優點 舉個例子,乙個人兩天可以完成的剛工作 一條執行緒工作兩天 那麼兩個人一天就可以完成了 兩條執行緒工作一條 很明顯,工作效率翻倍,下面畫個圖...

Apache的模式以及執行緒程序概念(六)

二 模組介紹 2.worker 3.event 因為apache的模式中會有一些程序執行緒的知識,所以如果想要搞懂apache的模式的不同一定要明白程序與執行緒之間是怎樣的一種關係 執行緒是程序的基本單位,乙個程序包含乙個執行緒或多個執行緒,程序下的執行緒會共享該執行緒的資源,而執行緒不會擁有系統資...