公平鎖:是指按照申請鎖的順序來獲取鎖,
非公平所:線程獲取鎖的順序不壹定按照申請鎖的順序來的。
//默認是不公平鎖,傳入true為公平鎖,否則為非公平鎖
ReentrantLock reentrantLock = new ReetrantLock();
1
2
2***享鎖和獨享鎖
獨享鎖:壹次只能被壹個線程所訪問
***享鎖:線程可以被多個線程所持有。
ReadWriteLock 讀鎖是***享鎖,寫鎖是獨享鎖。
3樂觀鎖和悲觀鎖。
樂觀鎖:對於壹個數據的操作並發,是不會發生修改的。在更新數據的時候,會嘗試采用更新,不斷重入的方式,更新數據。
悲觀鎖:對於同壹個數據的並發操作,是壹定會發生修改的。因此對於同壹個數據的並發操作,悲觀鎖采用加鎖的形式。悲觀鎖認為,不加鎖的操作壹定會出問題,
4分段鎖
1.7及之前的concurrenthashmap。並發操作就是分段鎖,其思想就是讓鎖的粒度變小。
5偏向鎖是指壹段同步代碼壹直被壹個線程所訪問,那麽該線程會自動獲取鎖。降低獲取鎖的代價
輕量級鎖
重量級鎖
6自旋鎖
自旋鎖