JDK併發AQS系列(四)
前面說到用自旋方式來獲取鎖,能有效避免執行緒掛起和恢復。但它也有不足之處: 僅適用於佔用時間短、顆粒度很小的情景。 需要硬體級別的原子操作。 它無法保證公平性。 每次讀寫操作需要同
前面說到用自旋方式來獲取鎖,能有效避免執行緒掛起和恢復。但它也有不足之處: 僅適用於佔用時間短、顆粒度很小的情景。 需要硬體級別的原子操作。 它無法保證公平性。 每次讀寫操作需要同
在上一篇部落格,我們介紹了 Map 集合的一種典型實現HashMap ,在 JDK1.8 中,HashMap 是由 陣列+連結串列+紅黑樹構成,相對於早期版本的 JDK HashMap 實現,新增了紅黑樹作為
背景 記錄下之前呼叫Collections.sort()造成App Crash的例子。業務原因,需要在主App中的檔案進行排序,排序的規則是按照最近的修改時間升序排序,然後刪除修改時間較小的檔案列表,實現簡
一直記得ArrayList的初始容量大小是10,今天再次看ArrayList的原始碼(版本:Jdk 7u80)時發現在建構函式的註釋上寫著初始化容量是10,但是建構函式中卻沒有指定初始容量,僅僅初始化了一個空的
實現動態代理的2種方式 第一種: 用JDK提供的 Proxy代理類 和 InvocationHandler呼叫處理類 配合起來可以攔截一個介面下面的實現類,攔截它的方法,這樣可以在它之前做點事情之後做點
動態代理 代理模式是設計模式中非常重要的一種型別,而設計模式又是程式設計中非常重要的知識點,特別是在業務系統的重構中,更是有舉足輕重的地位。代理模式從型別上來說,可以分為靜態代理和動態代理兩種型別。 在
鎖的獲取與釋放 在資料競爭情況下,一個執行緒只有在成功獲取鎖後才能繼續往下執行,當離開競爭區域時將釋放鎖,釋放的鎖供其他即將進入資料競爭區域的執行緒獲取。 同步器一般用acquire和r
在資料競爭情況下,一個執行緒只有在成功獲取鎖後才能繼續往下執行,當離開競爭區域時將釋放鎖,釋放的鎖供其他即將進入資料競爭區域的執行緒獲取。 同步器一般用acquire和release方法執行獲取釋放鎖操作,
前提 緊接著上一篇《通過原始碼淺析JDK中的資源載入》,ServiceLoader是SPI(Service Provider Interface)中的服務類載入的核心類,也就是,這篇文章先介紹Service
如果看過JDK原始碼的同學基本上都看到過類似於下面的語句: 對“final ReentrantLock lock = this.lock; ”這種寫法不知道大家是啥感受,我當時看到是非常奇怪的,於是就搜尋了
Java的Object是所有其他類的父類,從繼承的層次來看它就是最頂層根,所以它也是唯一一個沒有父類的類。它包含了物件常用的一些方法,比如getClass、hashCode、equals、clone、toS
國慶假期歸來就收到喜訊,之前給社群提交的patch( PerfMa給OpenJDK社群提交的第一個Patch )已經正式收錄到JDK12了(點選“閱讀原文”,可檢視詳情),非常感謝社群的小夥伴的積極配合,從提
如果你認真跟著前面操作那麼一定都完成相關配置及下載,我們的目的是部署Javaweb專案,需要jdk,mysql,tomcat。那麼接下來我們就開始先進行安裝jdk。 jdk 首先到oracle官網進行
前提 上一篇文章複習介紹了JDK中註解的底層實現,跟註解一樣比較常用,但是底層實現比較神祕的還有列舉型別。趁著國慶假期的最後兩天,把JDK中列舉的底層實現也進行一次探究。 通過例子查詢本質 在探究J
前言 由於 Cglib 本身的設計,無法實現在 Proxy 外面再包裝一層 Proxy(JDK Proxy 可以),通常會報如下錯誤: Caused by: java.lang.ClassFormatE