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