Java知識進階-程式設計師鍛鍊自己,手寫自旋鎖-知識鋪

2020-12-17 知識鋪

知識鋪: 致力於打造輕知識點,持續更新每次的知識點較少,閱讀不累。不佔太多時間,不停的來喚醒你記憶深處的知識點。

一、自旋原理

簡單講:線程嘗試獲取鎖的過程不會阻塞,而是採用循環的方式不斷獲取鎖。

優點: 減少內核態和用戶態切換的消耗

缺點: 不停自旋消耗CPU

二、 動手實現簡單自旋鎖

2.1 利用 AtomicReference 實現

AtomicReference 原子性,底層實現CAS操作,可以對比普通對象的引用。

源碼簡析:

從源碼中可以看出,AtomicReference 這原子操作底層使用的是unsafe.compareAndSwapObject 來完成,也就支持普通對象的 CAS操作。

AtomicInteger 這個也是原子操作,底層進行CAS比較的是整數,沒有AtomicReference 這個更實用。

2.2 手寫簡單自旋鎖源碼

2.3 簡單進行測試

相關焦點

  • Java知識進階-程式設計師必懂的自旋鎖TicketLock原理-知識鋪
    知識鋪: 致力於打造輕知識點,持續更新每次的知識點較少,閱讀不累。不佔太多時間,不停的來喚醒你記憶深處的知識點。解決公平性: 解決之前普通CAS自旋鎖(前面講解過,手寫一個自旋鎖)等待線程會不停自旋,隨機獲取鎖,導致先到的線程反而獲取不到鎖的公平性。
  • Java程式設計師憑什麼工資那麼高?
    首先,我們看一下有關調查統計的數據:相信大家都能看得出Java程式設計師的在這些行業中的工資待遇確實很高,引起大家羨慕不已,甚至很多人因為它的高收入而去轉行。那為什麼Java程式設計師的工資這麼高?接下來我們詳細分析一下。
  • 源碼時代java小課堂之線程鎖之自旋鎖
    java中定義了非常多的鎖,很多同學面試對於鎖,感覺非常茫然,於是源碼的老師決定,將這些鎖拆分開來注意分析講解,這篇我們先聊聊自旋鎖1.自旋鎖是基於CAS實現2. synchronized重量級鎖是基於系統內核3.
  • Java四大名著是什麼?java程式設計師提高技能的經典編程書籍推薦
    高薪程式設計師必讀的幾本書,基礎編程書籍推薦》,下面,再針對java程式設計師,梳理一些常見的圖書,期望對正在使用java編程的小夥伴有參考。學任何語言,基本的語法知識不能少,首推,Java四大名著( java編程思想+Effective java中文版+Java核心技術卷12),下面來具體介紹以下包含Java四大名著在內的java程式設計師類圖書。
  • 2020年最新Java學習路線圖,剛入門編程行業的小白必備知識清單!
    第一階段:基礎入門Java學習路線第一站:Java基礎正所謂千裡之行,始於足下,紮實的java基礎是走向成功的第一步!判斷自己適不適合這個行業,就看自己能不能在1個月內順利學完並靈活運用,很多小白都倒在了這一站。
  • 一個Java高級工程師的進階之路
    一個Java高級工程師的進階之路想必Java新手們都想知道如何成為一個Java高級工程師,小編整理了一下Java高級工程師必須具備的一些專業技能供大家參考,希望可以幫到大家!宏觀方面JAVA要想成為JAVA(高級)工程師肯定要學習JAVA。一般的程式設計師或許只需知道一些JAVA的語法結構就可以應付了。
  • Java程式設計師這個職業賺錢嗎?用程式設計師有幾種境界幫你拆解
    他們非常想證明自己掌握技術的嫻熟程度,沒錯,他知道這個知識,在這裡可以省略大括號。工作具有活力,常常因為一個技術細節加班到深夜,大多屬於拼命三郎型。如果項目不能讓他們學到他們想要的東西,他們會放棄這些項目,去投靠別的公司,跳槽對於他們來說很平常。
  • 作為一個Java 程式設計師 你應該會什麼
    4、API:Java 的核心API 是非常龐大的,但是有一些內容筆者認為是Java程式設計師必須熟悉的,否則不可能熟練的運用Java,包括:◆java.lang 包下的80%以上的類的功能的靈活運用。◆java.net 包下的60%以上的內容,對各個類的功能比較熟悉。◆java.text 包下的60%以上的內容,特別是各種格式化類。◆熟練運用JDBC. 8)、java.security 包下40%以上的內容,如果對於安全沒有接觸的話根本就不可能掌握java.
  • Java程式設計師的4個職業發展方向,該如何把握黃金5年?
    首先,對尚未進入職場工作的在校生以及準備轉行Java的同學的建議:一定要從最基礎的知識學起,學習Java基礎的時候,應該儘量多動手寫,寫出來運行一下,會發現很多問題。在這段時間裡,想必對Java已經有了一個較為深入的了解。
  • Ai聘網JAVA面試之深入理解自旋鎖
    什麼是自旋鎖?自旋鎖(AutoGyrationLock):是指當一個線程在獲取鎖的時候,如果鎖已經被其它線程獲取,那麼該線程將循環等待,然後不斷的判斷鎖是否能夠被成功獲取,直到獲取到鎖才會退出循環。其實,自旋鎖與互斥鎖比較類似,它們都是為了解決對某項資源的互斥使用。無論是互斥鎖,還是自旋鎖,在任何時刻,最多只能有一個保持者,也就說,在任何時刻最多只能有一個執行單元獲得鎖。但是兩者在調度機制上略有不同。對於互斥鎖,如果資源已經被佔用,資源申請者只能進入睡眠狀態。
  • Java程式設計師進階:Java4大核心基礎必備知識點
    本文總結了零基礎學習Java程式語言的幾個基礎知識要點。希望能夠對剛入門的Java新手有幫助。初學者先弄清這些Java的基本概念也是必不可少的,死記硬背肯定是不行的,重在理解,理解它們之間的區別與聯繫,分別有哪些應用。想想這些代碼中用到了哪些知識點,不要一味地照著書本敲代碼,而不去理解。
  • SUN JAVA程式設計師和開發員(SCJD)認證
    java程式設計師的認證Sun Certified JAVA Programmer(SCJP)     課程:SL-275 JAVA語言編程    本課程使學員掌握如何使用標準JAVA Development Kit,V1.1 (JDK) 開發應用程式和applets
  • 開課吧:Java程式設計師發展前景怎麼樣難不難?Java用人需求量分析!
    程式設計師是一個行業,無論是java程式設計師還是Python程式設計師等,在這裡java和python只是一種開發工具。想要學好一門開發語言,最重要也最核心的是其編程思想,例如java是一門面向對象的開發語言,那麼什麼是對象?
  • 提升java編程性能優化知識 程式設計師必看這幾點
    每個人在學習的路上都有自己的方法。對於學習java的學子也是如此,那麼java程式設計師如何提高編程性能呢,有哪些小知識或者技巧呢,怎麼樣才能在編程性能優化方面有所提升呢?  提升java編程性能優化知識 程式設計師必看這幾點  控制資源的使用,通過線程同步來控制資源的並發訪問;  控制實例的產生,以達到節約資源的目的;  控制數據共享,在不建立直接關聯的條件下
  • 樂觀鎖&悲觀鎖&自旋鎖
    操作員 BBB7.完成了操作,提交更新之前會先看資料庫的版本和自己讀取到的版本是否一致,但此時比對資料庫記錄版本時發現,操作員 BBB 提交的數據版本號為 222,而自己讀取到的版本號為111 ,不滿足 「 當前最後更新的versionversionversion與操作員第一次讀取的版本號相等 「 的樂觀鎖策略,因此,操作員 B的提交被駁回。
  • 怎樣學好Java?奮鬥中的程式設計師充實而快樂
    走上程式設計師的道路也是一個偶然的機會,在和中學同學聊天的時候讓我感受到了信息技術的發展對我們工作和生活的影響。因為我同學也是做程序開發的,讓我逐漸對管理系統的開發產生了興趣。我覺得走這條路可以讓自己的大學專業知識背景可以得到充分的利用。在同學的建議下我選擇了Java這門語言作為自己編程的入門語言。剛開始,我覺得零基礎入門還是很有壓力的。怎樣學好Java?成為我入門編程後需要思考的問題。
  • 九年程式設計師推薦java書籍
    評分排行榜一張圖展示前九名的書籍,其中包含了不同版本的java編程思想,可見java編程思想這本黑皮書的重要性!同時可以從這 9 本書籍當中看出,java開發者關注點主要是在編程思想&設計模式&java虛擬機&jdk這幾個方面,同時也很注重java相關的最佳實踐.
  • Java-100天知識進階-HashMap如何在Java中工作-知識鋪
    知識鋪: 致力於打造輕知識點,持續更新每次的知識點較少,閱讀不累。不佔太多時間,不停地來喚醒你記憶深處的知識點。一、認識HashMapJava中的HashMap散列存儲。1.1 是一種數據結構,它允許我們存儲對象並在我們知道key的情況下在恆定時間O(1)中檢索它。
  • Java 程式設計師必讀的 9 本書
    連結:https://hackernoon.com/10-best-java-books-for-beginners-and-advanced-developers-z27r3wvs如果你一名Java程式設計師,並且想知道如何通過閱讀書籍來提高自己的Java技能水平,那你今天算是來對地方了,在本文,我將分享一些有史以來我讀過的最好的Java書籍,這些書籍非但沒有因為時間的流逝而過時
  • 程式設計師書單,你讀過幾本?
    為了滿足我們好讀書的程式設計師能讀好書的願望,小編不辭勞苦,找了"萬卷"關於java學習的書籍,希望每位猿猿都能讀一讀!1、java學習基礎編程篇Java程序設計語言.(美國)阿諾德.清晰版JAVA2核心技術第1卷.基礎知識7thJAVA.2核心技術.卷II:高級特性7thJava語言程序設計-基礎篇(原書第8版)Java語言程序設計-進階篇(原書第8版)Java核心技術 卷II 高級特性 第9版【全】Java核心技術 卷I 基礎知識 中文版第9版【全】JAVA項目開發案例全程實錄