古詩詞大全網 - 成語用法 - Java中有哪些鎖,區別是什麽

Java中有哪些鎖,區別是什麽

1公平所和非公平所。

公平鎖:是指按照申請鎖的順序來獲取鎖,

非公平所:線程獲取鎖的順序不壹定按照申請鎖的順序來的。

//默認是不公平鎖,傳入true為公平鎖,否則為非公平鎖

ReentrantLock reentrantLock = new ReetrantLock();

1

2

2***享鎖和獨享鎖

獨享鎖:壹次只能被壹個線程所訪問

***享鎖:線程可以被多個線程所持有。

ReadWriteLock 讀鎖是***享鎖,寫鎖是獨享鎖。

3樂觀鎖和悲觀鎖。

樂觀鎖:對於壹個數據的操作並發,是不會發生修改的。在更新數據的時候,會嘗試采用更新,不斷重入的方式,更新數據。

悲觀鎖:對於同壹個數據的並發操作,是壹定會發生修改的。因此對於同壹個數據的並發操作,悲觀鎖采用加鎖的形式。悲觀鎖認為,不加鎖的操作壹定會出問題,

4分段鎖

1.7及之前的concurrenthashmap。並發操作就是分段鎖,其思想就是讓鎖的粒度變小。

5偏向鎖是指壹段同步代碼壹直被壹個線程所訪問,那麽該線程會自動獲取鎖。降低獲取鎖的代價

輕量級鎖

重量級鎖

6自旋鎖

自旋鎖