執行緒同步處理

2021-10-03 03:18:28 字數 1095 閱讀 8664

假如你在行駛的高鐵上想上廁所,於是你走到廁所門前,發現提示燈提示裡面有人,那麼你只能等待。如果多個人想上廁所,那麼就要排隊。這個時候廁所只能在同一時刻給乙個人使用。同樣的道理,在多執行緒中處理同步問題時引入同步鎖的概念,同步鎖類似於廁所的門,它將單獨的個體關在廁所裡,其他人想進也進不去。

同步鎖的關鍵字是synchronized,實現同步鎖有兩種方式:同步**塊和同步方法。往往同步方法應用的比較多。下面針對賣票的例子使用同步**塊:

class tickectthread implements runnable catch (interruptedexception e) 

system.out.println(thread.currentthread().getname() + "售票,剩餘票數:" + --this.tickect);}}

} }}public class sync

}}

售票員 - 0售票,剩餘票數:4

售票員 - 0售票,剩餘票數:3

售票員 - 0售票,剩餘票數:2

售票員 - 0售票,剩餘票數:1

售票員 - 0售票,剩餘票數:0

這裡的售票員都是0,並不是錯誤,只不過是每次都是這個執行緒搶到了cpu資源。

同步方法的實現:

class tickectthread implements runnable		}	

public synchronized void sale() catch (interruptedexception e)

system.out.println(thread.currentthread().getname() + "售票,剩餘票數:" + --this.tickect);

} } }

public class sync

}}

只需要給方法加上synchronized關鍵字。執行結果是一樣的。

同步鎖的優點很明顯,它讓執行緒有序,讓資料更有安全性。比如操作銀行轉賬的時候,不可能兩個人在兩個銀行對同一張銀行卡取錢。但是在轉賬的時候可以明顯感覺到轉賬速度比較慢。這就是同步鎖的劣勢,在效能方面不盡人意。

同步 執行緒同步

操作執行的先後順序。同步指兩個或兩個以上隨時間變化的量在變化過程中保持一定的相對關係。同步 英語 synchronization 指對在乙個系統中所發生的事件 event 之間進行協調,在時間上出現一致性與統一化的現象。在系統中進行同步,也被稱為及時 in time 同步化的 synchronous...

C 跨執行緒處理同步 非同步訊息

為了不阻塞主線程,將主線程發過來的命令處理為不同的事件,放到另乙個執行緒去執行,包括同步和非同步處理。注 同乙個程序,多執行緒。為了保證執行緒間的共享資源保護以及執行緒間的訊息機制,用到了下面幾個系統庫資源 std mutex std unique lock std conditional vari...

11 6 執行緒 執行緒同步

除了計算機體系結構的因素以外,程式使用變數的方式也會引起競爭,也會導致不一致的情況發生。例如,可能會對某個變數加1,然後基於這個數值做出某種決定。增量操作這一步和做出決定這一步兩者的組合並非原子操作,因而給不一致情況提供了可能。1.互斥量 可以通過使用pthread的互斥介面保護資料,確保同一時間只...