經(jīng)過前面的三節(jié),相信你對ReentrantLock底層的AQS原理已經(jīng)很清楚了。接下來給大家介紹幾個(gè)ReentrantLock中的幾個(gè)概念: 公平,非公平鎖的概念 Reent...
經(jīng)過前面的三節(jié),相信你對ReentrantLock底層的AQS原理已經(jīng)很清楚了。接下來給大家介紹幾個(gè)ReentrantLock中的幾個(gè)概念: 公平,非公平鎖的概念 Reent...
前兩節(jié)你應(yīng)該掌握了ReentrantLock加鎖成功和加鎖失敗入隊(duì)的核心邏輯,是如何通過AQS中的3個(gè)組件做到的。今天來我們看下: ReentrantLock中,當(dāng)線程釋放鎖...
上一節(jié),你應(yīng)該學(xué)到了ReentrantLock底層基于AQS的3個(gè)小組件 state、owner、queue。并且了解了下一個(gè)線程1進(jìn)行加鎖修改owner和state的過程。...
上一章你應(yīng)該掌握了Atomic的底層原理-CAS。接下來進(jìn)入另一個(gè)重要的一個(gè)知識(shí)AQS。我們通過ReentrantLock這個(gè)類來講講AQS這個(gè)知識(shí)。 從上圖可以看出,Ree...
經(jīng)過volatile和synchronize關(guān)鍵字的底層原理的洗禮,不知道你是否有一種感覺,要想弄明白它們的原理是一個(gè)非常難的過程。為什么費(fèi)這么大的力氣要弄明白這些并發(fā)基礎(chǔ)知...
上一節(jié)你了解了什么是CAS、synchronized形成的鎖的類型、重量級(jí)鎖是用戶態(tài)進(jìn)程向內(nèi)核態(tài)申請資源加鎖過程,HotSpot Java對象結(jié)構(gòu),以及初步從3個(gè)層面分析了下...
前幾節(jié)你應(yīng)該已經(jīng)了解和掌握了Thread、ThreadLocal、Volatile這幾個(gè)并發(fā)基礎(chǔ)知識(shí)的底層原理。這一節(jié),你可以跟我一起深入了解下synchronized關(guān)鍵字...
上一節(jié)我們基本了解Volatile的作用,從JMM層面簡單分析了下volatile可見性的實(shí)現(xiàn)要求。發(fā)現(xiàn)JMM設(shè)定了一些操作要求,在這些要求下,可以保證線程間的可見性。可是具...
前幾節(jié)你應(yīng)該學(xué)習(xí)到了Thread和ThreadLocal的底層原理,在接下來的幾節(jié)中,讓我們一起來探索volatile底層原理吧! 不知道你有沒有這樣的感受:有很多工程師都很...
上一節(jié)你弄懂了ThreadLocal是什么、它的基本使用方式、get方法的底層原理。這一節(jié)讓繼續(xù)深入研究下: ThreadLocal的set源碼原理 JVM的中的強(qiáng)引用、弱引...
上一節(jié)你應(yīng)該學(xué)習(xí)了thread的基本知識(shí)和源碼原理,熟悉了線程的應(yīng)用場景。這一節(jié)來學(xué)習(xí)下和Thread相關(guān)的一個(gè)類,ThreadLocal。 什么是ThreadLocal? ...
畫一張好圖的意義? 作為程序員的你,你經(jīng)常做的除了起給變量和類起名字、另一就是畫圖了。拋開起名字這個(gè)令人頭疼的問題,畫圖對我們來說是一個(gè)表達(dá)想法非常不錯(cuò)的方法。 因?yàn)楫媹D可以...
相信你經(jīng)過集合篇的成長,已經(jīng)對JDK源碼的學(xué)習(xí)輕車熟路了。接下來你將一起和我進(jìn)入后半篇的學(xué)習(xí)。讓我們開始吧! 在接下來10分鐘,你將學(xué)習(xí)到thread 的源碼原理、線程的狀態(tài)...
LinkedHashMap的源碼底層原理 LinkedHashMap的源碼底層原理 LinkedHashMap繼承自HashMap,但是它的底層增加了一個(gè)鏈表來維護(hù)插入或者訪...
HashMap基本原理和優(yōu)缺點(diǎn) HashMap基本原理和優(yōu)缺點(diǎn) 一句話講, HashMap底層數(shù)據(jù)結(jié)構(gòu),JDK1.7數(shù)組+單向鏈表、JDK1.8數(shù)組+單向鏈表+紅黑樹。 Ha...
上一節(jié)你看過了LinkedList的add方法源碼,是不是已經(jīng)打開了思路呢?其實(shí)核心原理就是輔助指針+Node雙向鏈表數(shù)據(jù)結(jié)構(gòu)而已。 相信經(jīng)過前面的學(xué)習(xí),你應(yīng)該熱身完畢了,之...
LinkedList初探 LinkedList初探 作為Java工程師,LinkedList你可能用的不多,大多你總是在new ArrayList。面試很多時(shí)候總是拿Link...
寫在前面的話 寫在前面的話 有的同學(xué)問我,開始講的很基礎(chǔ),節(jié)奏比較慢,這個(gè)是因?yàn)橐粋€(gè)為了讓大家慢慢進(jìn)入狀態(tài),后面的節(jié)奏會(huì)越來越快的,大家不要著急,另一個(gè)是因?yàn)楹唵蔚臇|西重復(fù),...
無論是程序員的工作、學(xué)習(xí),還是生活中的事情。都可以遵循這樣一條原則:“,簡單的事情重復(fù)做,正確的事情重復(fù)做?!?這樣的努力會(huì)讓你走到正道上,少走很多彎路。從小司機(jī)變成老司機(jī)。...