您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關java中CAS使用需要注意什么,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
Java中的集合主要分為四類:1、List列表:有序的,可重復的;2、Queue隊列:有序,可重復的;3、Set集合:不可重復;4、Map映射:無序,鍵唯一,值不唯一。
1、概念
這是一種思想和算法。CAS有3個操作數(shù),存儲值v、期待值a、修正值b、CAS的想法是,在期待值a和現(xiàn)在的存儲值v相同的情況下,將存儲值修正為b。否則,放棄這次的修正,繼續(xù)下。
2、使用注意
(1)CAS的最大缺點是ABA問題,ABA問題是現(xiàn)在的值從a變成b,從b變成a,這個值和最初的值一樣,但實際上這個值被修改了。CAS判斷的標準是當前值與預期值是否一致。因此,CAS無法檢測在此期間是否修改了值,只能檢測出現(xiàn)在的值是否與最初的值相同。解決辦法是添加版本號,每次修改版本號添加1,比較時不僅比較值是否一致,還比較版本號是否一致。
(2)自旋時間太長了。CAS一般配合循環(huán)或死亡循環(huán),在高并發(fā)場景下,如果不能修改成功,就會繼續(xù)嘗試修改,消耗CPU資源。
(3)范圍不能靈活控制,CAS只能修改變量,基本類型也許是引用類型,但很難對一組或多個共享變量進行CAS操作。
關于“java中CAS使用需要注意什么”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。