循環(huán)CAS

Compare and Swap:CAS操作需要輸入兩個(gè)數(shù)值,一個(gè)舊值(期望操作? 前的值),一個(gè)新值,在操作期間先比較舊值有沒(méi)有發(fā)生變化,如果沒(méi)有發(fā)生變化才交換成新值,發(fā)生了變化則不交換。

Q:處理器如何實(shí)現(xiàn)原子操作?

1.使用總線鎖保證原子性

2.使用緩存鎖保證原子性

Java如何實(shí)現(xiàn)原子操作:

(1)使用循環(huán)CAS實(shí)現(xiàn)原子操作

JVM中的CAS操作正是利用了處理器提供的CMPXCHG指令實(shí)現(xiàn)的,自旋的CAS實(shí)現(xiàn)的基本思路就是循環(huán)進(jìn)行CAS操作直到成功為止。

3.使用鎖機(jī)制實(shí)現(xiàn)原子操作

鎖機(jī)制保證了只有獲得鎖的線程才能夠操作鎖定的內(nèi)存區(qū)域。JVM內(nèi)部實(shí)現(xiàn)了很多鎖機(jī)制,有偏向鎖,輕量級(jí)鎖和互斥鎖有意思的是除了偏向鎖,JVM實(shí)現(xiàn)鎖的方式都用了循環(huán)CAS,即當(dāng)一個(gè)線程向進(jìn)入同步塊的時(shí)候使用CAS的方式來(lái)獲取鎖,當(dāng)它退出同步塊的是很好使用循環(huán)CAS釋放鎖。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Java8張圖 11、字符串不變性 12、equals()方法、hashCode()方法的區(qū)別 13、...
    Miley_MOJIE閱讀 3,917評(píng)論 0 11
  • 從三月份找實(shí)習(xí)到現(xiàn)在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂(lè)視家的研發(fā)崗...
    時(shí)芥藍(lán)閱讀 42,875評(píng)論 11 349
  • 并發(fā)系列的文章都是根據(jù)閱讀《Java 并發(fā)編程的藝術(shù)》這本書總結(jié)而來(lái),想更深入學(xué)習(xí)的同學(xué)可以自行購(gòu)買此書進(jìn)行學(xué)習(xí)。...
    小之丶閱讀 926評(píng)論 0 10
  • 今天晨讀的書目是《跟任何人都聊得來(lái)》,我腦袋里第一反應(yīng)居然是,為什么要跟任何人都聊得來(lái)? 如果因?yàn)槟撤N目的,必須要...
    海星_love閱讀 195評(píng)論 0 2
  • 秋風(fēng)把黃葉吹落, 月兒卻柔柔擁抱每片綠芽。 許久沒(méi)回家, 富貴竹卻用生命守候主人歸來(lái)。 有些美不用言說(shuō), 有些守候...
    梁汝閱讀 237評(píng)論 3 2

友情鏈接更多精彩內(nèi)容