多執行緒相關的概念

2022-07-13 09:03:09 字數 1157 閱讀 8561

1,程式和程序的區別

程式是乙個固定的邏輯和資料的集合,是乙個靜止的狀態,一般儲存在硬碟上。

程序是乙個正在執行的程式,是乙個動作的狀態,一般在記憶體中。

2.程序和執行緒

程序是乙個正在執行的程式,有自己獨立的資源分配。

執行緒是一條獨立的執行路徑,在執行某個程式的時候,該程式可以有很多的子任務,每個執行緒都可以獨立的完成其中乙個任務。

程序是分配資源的單位,執行緒不會獨立的分配資源,乙個程序中的所有執行緒共享乙個程序中的所有資源。

3.併發和並行

並行:多個任務(執行緒、程序)同時進行,需要有多個cpu,多核程式設計。

併發:多個任務同時發起,不能同時執行。

4.多執行緒的兩種實現方式

(1)定義乙個類繼承thread,重寫run方法中的內容,建立這個類的物件,呼叫start方法,開啟執行緒。

此方法的實現比較簡單,但是擴充套件性差,耦合性高,靈活性差

(2)定義乙個類實現runnable介面,寫run方法中的內容,建立這個類的物件用作任務,再呼叫thread類的物件,新增任務,呼叫start方法,開啟執行緒。

此方法的實現比較複雜,但是擴充套件性強,耦合性第,靈活性強。

並且將來還可以將任務類物件,提交到執行緒池中執行;任務類物件可以被不同執行緒執行,方便進行執行緒之間的資料互動。

5.多執行緒中線程安全的問題

(1)問題的提出:某段**還沒執行完成,cpu就被其他執行緒搶走,導致一些資料不完整

(2)問題的原因:沒*****的原子性

(3)希望:要麼全部執行,要麼全不執行。

(4)實現:使用同步**塊synchronized(鎖物件)的方式,將需要保證全都執行的**放在其中。非靜態方法的鎖物件是this,靜態方法的鎖物件是類的位元組碼檔案

6.死鎖

a執行緒需要甲資源,同時擁有乙資源。b執行緒需要乙資源,同時擁有甲資源。兩天執行緒都不肯釋放資源,同時又需要其他資源,導致兩條執行緒無法執行,造成死鎖

7.執行緒的生命週期

new:新建態

runnable:就緒態和執行態

blocked:阻塞態(等待鎖、i/o)

waiting:阻塞態(呼叫了wait()方法,使用notify()可能被喚醒)

timed_waiting:阻塞態(呼叫了有時間限制的wait(),sleep()方法)

terminated:死亡態

多執行緒程式設計相關概念

很多同學都聽說過,現代作業系統比如mac os x,unix,linux,windows等,都是支援 多工 的作業系統。什麼叫 多工 呢?簡單地說,就是作業系統可以同時執行多個任務。打個比方,你一邊在用瀏覽器上網,一邊在聽 一邊在用word趕作業,這就是多工,至少同時有3個任務正在執行。還有很多任務...

C 多執行緒 一 多執行緒的相關概念

什麼是程序?當乙個程式開始執行時,它就是乙個程序,程序包括執行中的程式和程式所使用到的記憶體和系統資源。而乙個程序又是由多個執行緒所組成的。什麼是執行緒?執行緒是程式中的乙個執行流,每個執行緒都有自己的專有暫存器 棧指標 程式計數器等 但 區是共享的,即不同的執行緒可以執行同樣的函式。什麼是多執行緒...

C 多執行緒學習 一 多執行緒的相關概念

什麼是程序?當乙個程式開始執行時,它就是乙個程序,程序包括執行中的程式和程式所使用到的記憶體和系統資源。而乙個程序又是由多個執行緒所組成的。什麼是執行緒?執行緒是程式中的乙個執行流,每個執行緒都有自己的專有暫存器 棧指標 程式計數器等 但 區是共享的,即不同的執行緒可以執行同樣的函式。什麼是多執行緒...