Atomic Integer 原理分析-getAndIncrement
生活随笔
收集整理的這篇文章主要介紹了
Atomic Integer 原理分析-getAndIncrement
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
getAndIncrement實際上是調用unsafe這個類里面提供的方法,Unsafe類我們前面在分析AQS的時候講過,這個類相當于是一個后門,使得Java可以像C語言的指針一樣直接操作內存空間。當然也會帶來一些弊端,就是指針的問題。實際上這個類在很多方面都有使用,除了J.U.C這個包以外,還有Netty、kafka等等
這個類提供了很多功能,包括多線程同步(monitorEnter)、CAS操作(compareAndSwap)、線程的掛起和恢復(park/unpark)、內存屏障(loadFence/storeFence)?
內存管理(內存分配、釋放內存、獲取內存地址等.)
public final int getAndIncrement() { return unsafe.getAndAddInt(this, valueOffset, 1); }valueOffset,也比較熟了。通過unsafe.objectFieldOffset()獲取當前Value這個變量在內存中的偏移量,后續會基于這個偏移量從內存中得到value的值來和當前的值做比較,實現樂觀鎖
private static final long valueOffset; static { try { valueOffset = unsafe.objectFieldOffset(AtomicInteger.class.getDeclaredField("value")); } catch (Exception ex) { throw new Error(ex); } }?
總結
以上是生活随笔為你收集整理的Atomic Integer 原理分析-getAndIncrement的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: J .U.C 中的原子操作类
- 下一篇: Atomic Integer 原理分析-