多執行緒程式設計

2021-07-11 16:21:48 字數 1087 閱讀 5782

多執行緒程式設計

---多工處理有兩種型別:-基於 程序   -基於 執行緒(thread)。

---基於程序的特點是允許計算機同時執行兩個或者更多的程式。

---基於執行緒的多工環境中,執行緒是最小的處理單位。

---程序間呼叫涉及的開銷比執行緒間通訊多。

---執行緒間的切換成本比程序間切換成本低。

---基於執行緒所需的開銷更少。

---建立thread物件:   (1)、class mythread extends thread

}(2)、public class youthread implements runnable

}---主線程和子號執行緒的地位是平等的。

---執行緒一共有五種狀態:新建狀態:new 出thread物件。

就緒狀態:執行start方法之後,執行run方法之前。

執行狀態  → (中斷狀態):執行run方法。中斷狀態的原因:(1)、由於優先順序的關係,執行緒沒有搶到cpu,這個時候執行緒就處於中斷狀態

(優先順序,最小為一級,最大為十級 )-(優先順序代表的是優先被執行的機率高一點)。

(2)、使用sleep()方法使執行緒休眠,這也是執行緒中斷的原因。休眠結束,執行緒重新參與cpu的競爭。

(3)、執行緒由於等待乙個i(輸入)/o(輸出)事件被阻塞。

(4)、wait-notify(喚醒)機制,

執行緒間的通訊機制。

(5)、掛起:通過呼叫yield()方法,執行緒已顯示出讓cpu控制權。

死亡狀態:run方法執行完

---執行緒安全問題:有時候兩個或者多個執行緒可能會試圖同時訪問乙個資源物件,有可能造成該資源物件資料混亂。例如:乙個執行緒可能嘗試從乙個檔案

中讀取資料,而另乙個執行緒則嘗試在同一檔案中修改資料在此情況下,資料可能就會變得不一致。

---執行緒同步鎖機制:為了確保在任何時間點乙個共享的資源只被乙個執行緒使用,使用了「同步」。使用同步關鍵字synchronized來進行標識。

---同步帶來的後果就是效率下降了。

---死鎖:由同步引起的,當兩個執行緒訪問一對相互的依賴的同步資源的時候,會出現死鎖的問題。

---wait-notify解決死鎖問題。(1)、生產者  與 消費者    

多執行緒程式設計

1 多執行緒的基本思路不是在介面執行緒執行費時的 而是專門啟動乙個執行緒 稱作工作執行緒 來完成,介面執行緒只負責介面的 顯示 和操作,而工作執行緒只負責耗時的操作過程。2 對於普通的win32應用程式來說,執行緒可以分為兩種 介面 ui user inte ce 執行緒和工作執行緒。介面執行緒一般...

多執行緒程式設計

如何編寫執行緒安全的dll 在我的工作中經常會編寫dll,這些dll有個共同的特點就是都有乙個初始化函式,乙個資源釋放函式,其他幾個函式都是核心功能函式。而且這些dll有時會被多個程序同時呼叫,這就牽扯到多程序的多執行緒呼叫dll的問題。有點繞口,以下我根據我實踐中遇到的問題,分四種情況分享一下我解...

多執行緒程式設計

1 執行緒的狀態 建立狀態 準備好了乙個多執行緒的物件 就緒狀態 呼叫了start 方法,等待cpu進行排程 執行狀態 執行run 方法 阻塞狀態 暫時停止執行,可能將資源交給其他執行緒使用 終止狀態 死亡狀態 執行緒銷毀 2 執行緒的常用方法 thread類 取得執行緒名稱 getname thr...