CAS(Compare And Swap)即比較并交換,CAS 是樂觀鎖技術(shù)膝舅,當(dāng)多個線程嘗試使用 CAS 同時更新同一個變量時嗡载,只有其中一個線程能更新變量的值,而其它線程都失敗仍稀,失敗的線程并不會被掛起洼滚,而是被告知這次競爭中失敗,并可以再次嘗試技潘。它包含三個參數(shù):V 內(nèi)存值遥巴,預(yù)期值 A,要修改的新值 B享幽。當(dāng)且僅當(dāng)預(yù)期值 A 和內(nèi)存值 V 相同時铲掐,將內(nèi)存值 V 修改為 B,否則什么都不做值桩。
阻塞和自旋其實(shí)是線程兩種等待操作共享資源的方式摆霉,這兩種方式也是比較常用的方式,它們主要區(qū)別在于:
阻塞:線程進(jìn)入阻塞狀態(tài),其表現(xiàn)為放棄CPU時間片携栋,等待后期被操作系統(tǒng)線程調(diào)度器喚醒搭盾,然后在繼續(xù)執(zhí)行線程中的邏輯。
自旋:線程進(jìn)入自旋狀態(tài)刻两,其表現(xiàn)為不放棄CPU時間片增蹭,利用CPU來進(jìn)行“旋轉(zhuǎn)”,也就是不斷地進(jìn)行重試磅摹。