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

什么是CAS?有什么特性?

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

好口碑IT培訓

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

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

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


猜你喜歡:

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

Spring AOP實現原理和常見代理的區別

網絡通信協議有哪些?

Java培訓課程



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



人妻系列无码专区_漂亮人妻被中出中文字幕_人妻中文制服巨乳中文