synchronized詳解 aqs和cas有什么區(qū)別?
aqs和cas有什么區(qū)別?區(qū)別如下:CAS(比較和交換)。CAS操作由三個(gè)操作數(shù)組成:內(nèi)存位置(V)、預(yù)期原始值(a)和新值(b)。如果內(nèi)存位置的值與預(yù)期的原始值匹配,處理器會(huì)自動(dòng)將位置值更新為新值。
aqs和cas有什么區(qū)別?
區(qū)別如下:
CAS(比較和交換)。CAS操作由三個(gè)操作數(shù)組成:內(nèi)存位置(V)、預(yù)期原始值(a)和新值(b)。如果內(nèi)存位置的值與預(yù)期的原始值匹配,處理器會(huì)自動(dòng)將位置值更新為新值。否則,處理器什么也不做。無論哪種情況,它都返回CAS指令之前的位置值。CAS有效地表示“我認(rèn)為位置V應(yīng)該包含值a;如果它包含值,則將B放在該位置;否則,不要更改位置,只需告訴我該位置的當(dāng)前值。
如何通過AQS構(gòu)建鎖和同步器的框架?
AQS的設(shè)計(jì)思想是通過繼承提供一個(gè)模板,這樣我們就可以根據(jù)不同的場(chǎng)景輕松實(shí)現(xiàn)個(gè)性化的同步器。同步器的核心是管理共享狀態(tài)。通過控制狀態(tài)可以實(shí)現(xiàn)不同的鎖定機(jī)制。AQS的設(shè)計(jì)必須考慮到隊(duì)列管理工作的復(fù)雜性和易出錯(cuò)性,統(tǒng)一抽象管理,并對(duì)進(jìn)程進(jìn)行控制,而暴露于子類調(diào)用的方法是操作共享狀態(tài)的方法,以便提供原子操作的狀態(tài)。通常,子類的同步器使用AQS提供的getstate、setstate和compareandsetstate方法。前兩種方法是普通的get和set方法。要使用這兩種方法,必須確保沒有數(shù)據(jù)競(jìng)爭(zhēng)。Compareandsetstate方法提供CAS模式硬件級(jí)原子更新。對(duì)于獨(dú)占模式,給出了鎖獲取和釋放過程的定義,定義了鎖獲取和釋放的邏輯,并為子類提供了獲取和釋放鎖的接口。它的執(zhí)行邏輯可以參考前面的“鎖獲取和釋放”,它提供了一個(gè)強(qiáng)大的模板