1、自旋原理markdown
簡單講:線程嘗試獲取鎖的過程不會阻塞,而是採用循環的方式不斷獲取鎖。ide
優勢:減小內核態和用戶態切換的消耗測試
缺點:不停自旋消耗CPU線程
2、動手實現簡單自旋鎖對象
2.1利用AtomicReference實現 www.121mu.com/gszlyfxgl/源碼
AtomicReference原子性,底層實現CAS操做,能夠對比普通對象的引用。it
源碼簡析:class
從源碼中能夠看出,AtomicReference這原子操做底層使用的是unsafe.compareAndSwapObject來完成,也就支持普通對象的CAS操做。原理
AtomicInteger這個也是原子操做,底層進行CAS比較的是整數,沒有AtomicReference這個更實用。循環
2.2手寫簡單自旋鎖源碼
2.3簡單進行測試