-
死鎖
爲了防止死鎖,必須設置過期時間
例如:線程A拿到鎖,還沒有解鎖,程序突然掛掉,鎖一直存在,其他線程一直拿不到鎖。所以要設置過期時間
-
加鎖跟解鎖必須是同一個線程,保證原子性
例如:線程A拿到鎖,業務還沒有處理完成,鎖已經超時被自動刪除掉了;
線程B拿到鎖,線程A解鎖的時候必須判斷值是當前線程,否則刪掉線程B的鎖。
可重入鎖和鎖的原子性,可以用到ThreadLocal保證當前線程的值
爲了防止死鎖,必須設置過期時間
例如:線程A拿到鎖,還沒有解鎖,程序突然掛掉,鎖一直存在,其他線程一直拿不到鎖。所以要設置過期時間
例如:線程A拿到鎖,業務還沒有處理完成,鎖已經超時被自動刪除掉了;
線程B拿到鎖,線程A解鎖的時候必須判斷值是當前線程,否則刪掉線程B的鎖。
可重入鎖和鎖的原子性,可以用到ThreadLocal保證當前線程的值