色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

Java CAS操作與Unsafe類詳解

瀏覽:3日期:2022-08-16 10:00:51
一、復習

計算機內存模型,synchronized和volatile關鍵字簡介

二、兩者對比

sychronized和volatile都解決了內存可見性問題不同點:(1)前者是獨占鎖,并且存在者上下文切換的開銷以及線程重新調度的開銷;后者是非阻塞算法,不會造成上下文切換的開銷。(2)前者可以保證操作的原子性,但是后者不能保證操作的原子性。

三、在什么情況下才會使用volatile 寫入變量是不依賴當前值的,如果是依賴當前值的話,由于獲取-計算-寫入,三者不是原子性操作,而volatile是保證原子性操作的。 變量沒有加鎖的時候,如果變量加鎖了,是可以保證內存的可見性的因此不需要再使用volatile 四、Java中的原子性操作 原子性操作通俗的來講就是一組操作,要么都執行成功,要么都執行失敗,不存在執行部分成功的情況 使用synchronized關鍵字既可以保證操作的原子性又可以保證內存的可見性,volatile只能保證內存的可見性,但是不能保證操作的原子性;synchronized固然好,但在高并發的情況下,由于它是一種獨占鎖,因此會引起性能低下的問題。 五、Java中的CAS操作 定義:CAS(compare and swap)比較并交換,這是JDK提供的一種非阻塞算法,它通過硬件保證了比較-更新的原子性問題。JDK中的Unsafe類提供了一系列的compareAndSwap*方法,下面以compareAndSwapLong為例進行講解 boolean compare(Object obj,long offset,long expect,long update) 先分別解釋一下各個參數,obj是一個對象的引用(也就是對象存儲的地址),offset是相對于前面地址的偏移量,expect是一個預想的值,update代表如果和預想的值一樣,那么就是使用update這個值來代替,并且返回true,否則返回false 這是處理器提供的一種原子性指令 六、ABA問題 描述:線程1獲取變量x的值為A,然后嘗試修改為B,但是此時如果有另一個線程修改了x的值為B,同時又修改成了A,那么線程2的這個A和線程1之前的A就不是同一個A了 產生原因:環形依賴,變量的值從A到B,然后又從B到A,這樣只能一個方向輪轉,如果是從A到B,然后從B到C就不會出現這種情況。 解決方式:JDK中的AtomicStampedReferece給每個變量一個時間戳,從而避免了ABA問題 七、Unsafe類

在JDK中的rt.jar包中有許多方法都是native的,這是一種硬件級別的操作,使用JNI來調用C++底層函數來操作。

1.long objectFieldOffset(Field field)

釋義:獲取某個對象的中的某個域值所在對象的中的內存偏移量

try{ long value = Unsafe.objectFieldOffset(AutomicLong.class.getDeclaredField('value'));}catch(Exception e){ e.printStackTrace();}2.int arrayBaseOffset(Class arrayClass)

釋義:獲取數組中的第一個元素地址

3.int arrayIndexOffset(Class arrayClass)

釋義:獲取數組中第一個元素的字節大小

4.boolean compareAndSwapLong(Object obj,long offset,long expect,long update)

可以見上文

八、源碼:

所在包:com.ruigege.OtherFoundationOfConcurrent2

https://github.com/ruigege66/ConcurrentJava

以上就是Java CAS操作與Unsafe類詳解的詳細內容,更多關于Java CAS操作與Unsafe類的資料請關注好吧啦網其它相關文章!

標簽: Java
相關文章:
主站蜘蛛池模板: 亚洲综合美女 | 精品亚洲一区二区三区 | 国产成人久久精品二区三区牛 | 美国欧美一级毛片 | 精品国产欧美另类一区 | 欧美日韩精品一区二区三区高清视频 | 国产一级真人毛爱做毛片 | 久久一区二区精品综合 | 美女18网站 | 美女张腿男人桶免费视频 | 99久久精品免费看国产一区二区三区 | 2022国产精品手机在线观看 | 国产自在自线午夜精品 | 成人www视频网站免费观看 | 国产亚洲精品线观看77 | 美女视频免费黄色 | 乱码在线中文字幕加勒比 | 亚洲欧美日本国产综合在线 | 亚洲成a人片毛片在线 | 国产一级特黄一级毛片 | 亚洲男女在线 | 中国美女黄色一级片 | 国产亚洲一欧美一区二区三区 | 在线观看人成午夜影片 | 美女与男人对肌免费网站 | 男人好大好硬好爽免费视频 | 日韩加勒比在线 | 国产自在线观看 | 99一区二区三区 | 亚洲欧美精品一区天堂久久 | 亚洲日本aⅴ片在线观看香蕉 | 成人国产精品视频 | 999热成人精品国产免 | 国产一级大片在线观看 | 久久88综合| 91久国产在线观看 | 碰碰碰精品视频在线观看 | 18岁免费网站 | 亚洲区精品 | 毛片免费在线 | 日本在线观看网址 |