多執行緒重要知識點 執行緒同步

2021-09-21 13:14:27 字數 1206 閱讀 6366

當多個執行緒同時共享同乙個全域性變數或靜態變數,做寫的操作時,可能會發生資料衝突問題,也就是執行緒安全問題。但是做讀操作是不會發生資料衝突問題。

舉例:兩個視窗同時售賣100張火車票。

解決方法:

使用多執行緒之間同步或使用鎖(lock)。

原理:

將可能會發生資料衝突問題(執行緒不安全問題),只能讓當前乙個執行緒進行執行。**執行完成後釋放鎖,讓後才能讓其他執行緒進行執行。這樣的話就可以解決執行緒不安全問題。

什麼是多執行緒同步?

當多個執行緒共享同乙個資源,不會受到其他執行緒的干擾。

同步函式使用的是this

1、同步**塊:

就是將可能會發生執行緒安全問題的**,給包括起來。只能讓當前乙個執行緒進行執行,被包裹的**執行完成之後才能釋放所,然後才能讓其他執行緒進行執行。

synchronized(同乙個資料)

2、同步函式:

在方法上修飾synchronized 稱為同步函式

publicsynchronizedvoid test(){}

3、靜態同步函式:

方法上加上static關鍵字,使用synchronized 關鍵字修飾 為靜態同步函式

synchronized(類名.class)

靜態的同步函式使用的鎖是該函式所屬位元組碼檔案物件,可以用 getclass方法獲取,也可以用當前類名.class 表示。

4.同步**塊、同步函式、靜態同步函式的區別?

同步**使用自定鎖(明鎖),同步函式使用this鎖,靜態同步函式使用位元組碼檔案,也就是類.class

1、什麼是多執行緒死鎖?

同步中巢狀同步,導致鎖無法釋放

解決辦法:

同步中盡量不要巢狀同步

C 知識點 執行緒2 執行緒管理

執行緒管理就是使用join或detach來管理執行緒。第乙個版本,注意在異常中增加對執行緒的join include include using namespace std void function 1 std cout第二個版本,包一層 include include using namespa...

多執行緒知識點整理

基本概念 多執行緒程式在較低的層次上擴充套件了多工的概念 乙個程式同時執行多個任務,通常,每乙個任務稱為乙個執行緒,它是執行緒控制的簡稱。可以同時執行乙個以上執行緒的程式稱為多執行緒程式。多程序與多執行緒的區別 每個程序擁有自己的一整套變數,而執行緒則共享資料。相關介面 執行緒的狀態 要獲得乙個執行...

多執行緒之知識點

多執行緒的學習 1.都不是原子操作,在多執行緒中值可能被改變 因此在多執行緒環境中對乙個變數進行讀寫時,我們需要有一種方法能夠保證對乙個值的遞增操作是原子操作 即不可打斷性,乙個執行緒在執行原子操作時,其它執行緒必須等待它完成之後才能開始執行該原子操作。這種涉及到硬體的操作會不會很複雜了,幸運的是,...