您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關如何解決同步代碼塊的數據安全問題,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
一、同步代碼塊
synchronized關鍵字可以用于方法中的某個區塊中,表示只對這個區塊這個區塊的資源實現互斥訪問
賣票案例出現了線程安全問題
賣出了不存在的票和重復的票
解決線程安全問題的一種方案:使用同步代碼塊
格式:
synchronized(同步鎖){
需要同步操作的代碼
}
注意事項:
1.通過代碼塊中的鎖對象,可以使用任意的對象
2.但是必須保證多個線程使用的鎖對象是同一個
3.鎖對象作用:把同步代碼塊鎖住,只讓一個線程在同步代碼塊中執行
測試類:
二、同步技術的原理
使用了一個鎖對象,這個鎖對象叫同步鎖,也叫對象鎖,也叫對象監視器
3個線程一起搶奪cpu的執行權,誰搶到了誰執行run方法進行賣票
t0搶到了cpu的執行權,執行run方法,遇到synchronized代碼塊
這時t0會檢查synchronized代碼塊是否有鎖對象
發現有,就會獲取到鎖對象,進入到同步中執行
t1搶到了cpu的執行權,執行run方法,遇到synchronized代碼塊
這時t1會檢查synchronized代碼塊是否有鎖對象
發現沒有,t1就進入到阻塞狀態,會一直等待t0線程歸還鎖對象
一直到t0線程執行完同步中的代碼,會把鎖對象歸還給同步代碼塊
t1才能獲取到鎖對象進入到同步中執行
以上就是如何解決同步代碼塊的數據安全問題,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。