一鳍徽、什么是CAS
CAS(Compare And Swap),即比較并交換敢课。是解決多線程并行情況下使用鎖造成性能損耗的一種機(jī)制阶祭,CAS操作包含三個(gè)操作數(shù)————內(nèi)存位置(V)、預(yù)期原值(A) 和新值(B)直秆。如果內(nèi)存位置的值與預(yù)期原值相匹配濒募,那么處理器會(huì)自動(dòng)將該位置值更新為新值。否則圾结,處理器不做任何操作瑰剃。無(wú)論哪種情況,它都會(huì)在CAS指令之前返回該位置的值筝野。CAS有效地說明了“我認(rèn)為位置V應(yīng)該包含值A(chǔ);如果包含該值晌姚,則將B放到這個(gè)位置;否則歇竟,不要更改該位置挥唠,只告訴我這個(gè)位置現(xiàn)在的值即可』酪椋”
二猛遍、什么是AQS
AQS(AbstractQueuedSynchronizer),AQS是JDK下提供的一套用于實(shí)現(xiàn)基于FIFO等待隊(duì)列的阻塞鎖和相關(guān)的同步器的一個(gè)同步框架号坡。這個(gè)抽象類被設(shè)計(jì)為作為一些可用原子int值來表示狀態(tài)的同步器的基類懊烤。