目錄

1.synchronized同步鎖

2.ReentrantLock重入鎖

3.ReadWriteLock讀寫鎖

4.StampedLock戳鎖(目前沒找到合適的名字,先這么叫吧...)

5.總結(jié)

=======正文分割線==========

為了更好的支持并發(fā)程序,JDK內(nèi)部提供了多種鎖。本文總結(jié)4種鎖。

1.synchronized同步鎖

使用

synchronized本質(zhì)上就2種鎖:

1.鎖同步代碼塊

2.鎖方法

可用object.wait() object.notify()來操作線程等待喚醒

原理:synchronized細(xì)節(jié)的描述傳送門:jdk源碼剖析三:鎖Synchronized

性能和建議:JDK6之后,在并發(fā)量不是特別大的情況下,性能中等且穩(wěn)定。建議新手使用。

2.ReentrantLock重入鎖(Lock接口)

使用:ReentrantLock是Lock接口的實現(xiàn)類。Lock接口的核心方法是lock(),unlock(),tryLock()??捎肅ondition來操作線程:

大數(shù)據(jù)培訓(xùn),云培訓(xùn),數(shù)據(jù)挖掘培訓(xùn),云計算培訓(xùn),高端軟件開發(fā)培訓(xùn),項目經(jīng)理培訓(xùn)

如上圖,await()和object.wait()類似,singal()和object.notify()類似,singalAll()和object.notifyAll()類似

原理核心類AbstractQueuedSynchronizer,通過構(gòu)造一個基于阻塞的CLH隊列容納所有的阻塞線程,而對該隊列的操作均通過Lock-Free(CAS)操作,但對已經(jīng)獲得鎖的線程而言,ReentrantLock實現(xiàn)了偏向鎖的功能。

性能和建議:性能中等,建議需要手動操作線程時使用。

 

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運,軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式