教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

什么是CAS?有什么特性?

更新時間:2020年12月08日17時01分 來源:傳智教育 瀏覽次數(shù):

好口碑IT培訓

Synchronized顯然是一個悲觀鎖,因為它的并發(fā)策略是觀的:不管是否會產生競爭,任何的數(shù)據操作都必須要加鎖、用戶態(tài)核心態(tài)轉換、維護鎖計數(shù)器和檢査是否有被阻塞的線程需要被喚醒等操作。隨著硬件指令集的發(fā)展,我們可以使用基于沖突檢測的樂觀并發(fā)策略。先進行操作,如果沒有其他線程征用數(shù)據,那操作就成功了;如果共享數(shù)據有征用,產生了沖突,那就再進行其他的補償措施。這種樂觀的并發(fā)策略的許多實現(xiàn)不需要線程掛起,所以被稱為非阻塞同步。

樂觀鎖的核心算法是CAS( Comparand Swap,比較并交換),它涉及到三個操作數(shù):內存值、預期值、新值。當且僅當預期值和內存值相等時才將內存值修改為新值。

這樣處理的邏輯是,首先檢查某塊內存的值是否跟之前我讀取時的一樣,如不一樣則表示期間此內存值已經被別的線程更改過,舍棄本次操作,否則說明期間沒有其他線程對此內存值操作,可以把新值設置給此塊內存CAS具有原子性,它的原子性由CPU硬件指令實現(xiàn)保證,即使用JNI調用Native方法調用由C++編寫的硬件級別指令,JDK中提供了Unsafe類執(zhí)行這些操作。


猜你喜歡:

什么是負載均衡?負載均衡原理詳解

Spring AOP實現(xiàn)原理和常見代理的區(qū)別

網絡通信協(xié)議有哪些?

Java培訓課程





下面是傳智教育公開的幾套Java課程,您可以下載和在線觀看學習,如果想深入學習java并想找到不錯的java開發(fā)相關工作,建議報班學習傳智教育Java高級軟件工程師課程。獲取【Java視頻教程+資料】加播妞1605146928606_課程資料.jpg:435946716。



0 分享到:
和我們在線交談!