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