目錄

1.synchronized同步鎖

2.ReentrantLock重入鎖

3.ReadWriteLock讀寫鎖

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

5.總結(jié)

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

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

1.synchronized同步鎖

使用

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

1.鎖同步代碼塊

2.鎖方法

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

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

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

2.ReentrantLock重入鎖(Lock接口)

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

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

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

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

性能和建議:性能中等,建議需要手動(dòng)操作線程時(shí)使用。

 

延伸閱讀

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