執行緒同步就是針對:多個執行緒操作同一個資源
并發:同一個物件被多個執行緒同時操作
處理多執行緒問題時,多個執行緒訪問同一個物件,并且某些執行緒還想修改這個物件,這時需要執行緒同步,執行緒同步其實就是一種等待機制,多個需要同時訪問此物件的執行緒進入這個物件的等待池,等待前面的執行緒使用完畢,下一個執行緒繼續使用
通常用佇列和鎖來解決執行緒同步
很通俗的例子,就是上廁所排隊,然后廁所門上上鎖,
狂神真是人才,想出這么有趣的例子
每個物件都有一把鎖,佇列和鎖可以保證執行緒的安全性
為了保證資料在方法之中被訪問時的正確性,在訪問時加入鎖機制(synchronized),當一個執行緒獲得物件的排它鎖,獨占資源,其他執行緒必須等待,使用后釋放鎖即可,可能存在的問題是:
第一:一個執行緒持有鎖會導致其他所有需要此鎖的執行緒掛起
第二:在多執行緒競爭下,加鎖,釋放鎖會導致比較多的背景關系切換和調度時延,引起性能問題
第三:如果一個優先級高的執行緒等待一個優先級低的執行緒釋放鎖,會導致優先級倒置,引起性能問題
好了,今天先到這里,狂神真的很有趣,歡迎大家看他的視頻~
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/163677.html
標籤:其他
下一篇:安全日記—零基礎開始學安全(2)
