7 鎖知識點

2021-10-21 11:06:00 字數 612 閱讀 3278

​ 1,系統資源的競爭

​ 2,程序推進順序非法

​ 3,訊號量使用不當也會造成死鎖

​ 4,死鎖產生的必要條件:(1.互斥條件,2.不剝奪條件,3.請求和保持條件,4.迴圈等待條件)

加鎖順序(執行緒按照一定的順序加鎖)

加鎖時限(執行緒嘗試獲取鎖的時候加上一定的時限,超過時限則放棄對該鎖的請求,並釋放自己占有的鎖)

死鎖檢測

​ 乙個可行的做法是釋放所有鎖,回退,並且等待一段隨機的時間後重試

​ 乙個更好的方案是給這些執行緒設定 優先順序,讓乙個(或幾個)執行緒回退,剩下的執行緒就像沒發生死鎖一樣繼續保持著它們需要的鎖。

悲觀鎖:總是假設最壞的情況,每次去拿資料的時候都認為別人會修改,所以每次在拿資料的時候都會上鎖。適用於多寫的場景

樂觀鎖:總是假設最好的情況,每次去拿資料的時候都認為別人不會修改,所以不會上鎖。適用於多讀的場景

版本號機制: 即在資料庫中增加版本機制字段, 每次資料被修改+1,當在讀資料的時候會獲取比版本機制該欄位是否相等, 相等則更新, 反之重試更新操作, 直到成功為止

cas演算法: 即比較與交換,是種無鎖演算法, 就是在不使用鎖的情況下實現多執行緒之間的變數同步, 也叫非阻塞同步(nio)

後期持續更新

知識點7 堆

3.堆排序 4.題型訓練 5.應用場景 6.參考文件 理解堆的乙個很好的例子就是我們的足球世界盃的賽制!我們的足球世界盃的賽制就是自底向上的。堆是一棵完全二叉樹,樹中每個結點的值都不小於 或不大於 其左右孩子結點的值。堆一般用於優先佇列priority queue的實現,而優先佇列預設情況下使用的是...

第7章 知識點

display屬性 block inline inline bloc none 浮動屬性 左浮動 left 右浮動 right 不浮動 none 清除浮動 clear屬性 清除左邊浮動 left 清除右邊浮動 right 清除兩側浮動 both 不清除浮動 none 解決父級邊框塌陷的方法 浮動元素...

mysql知識點歸納 鎖(死鎖)

願歷盡千帆,歸來仍是少年 所遇問題 場景 create table user item id bigint 20 not null,user id bigint 20 not null,item id bigint 20 not null,status tinyint 4 not null,prim...