摘要:Java NIO是一種基于通道和緩沖區的I/O方式,已經被廣泛的應用,成為解決高并發與大量連接和I/O處理問題的有效方式。 Java NIO相關組件 Java NIO主要有三個核心部分組成,分別是:Channel(通道),Buffer(緩沖區), Selector(選擇器) Channel Chan 閱讀全文
posted @ 2020-07-22 20:11 PinXiong 閱讀(63) 評論(0) 推薦(0) 編輯
摘要:Semaphore通過permits的值來限制線程訪問臨界資源的總數,屬于有限制次數的共享鎖,不支持重入。 前提條件 在理解Semaphore時需要具備一些基本的知識: 理解AQS的實現原理 之前有寫過一篇《深入淺出AQS源碼解析》關于AQS的文章,對AQS原理不了解的同學可以先看一下 Semaph 閱讀全文
posted @ 2020-07-18 11:07 PinXiong 閱讀(70) 評論(0) 推薦(0) 編輯
摘要:讀寫鎖實現邏輯相對比較復雜,但是卻是一個經常使用到的功能,希望將我對ReentrantReadWriteLock的源碼的理解記錄下來,可以對大家有幫助 前提條件 在理解ReentrantReadWriteLock時需要具備一些基本的知識 理解AQS的實現原理 之前有寫過一篇《深入淺出AQS源碼解析》 閱讀全文
posted @ 2020-07-17 17:28 PinXiong 閱讀(97) 評論(0) 推薦(0) 編輯
摘要:ReentrantLock不但是可重入鎖,而且還是公平或非公平鎖,在工作中會經常使用到,將自己對這兩種鎖的理解記錄下來,希望對大家有幫助。 前提條件 在理解ReentrantLock時需要具備一些基本的知識 理解AQS的實現原理 之前有寫過一篇《深入淺出AQS源碼解析》關于AQS的文章,對AQS原理 閱讀全文
posted @ 2020-07-15 16:00 PinXiong 閱讀(109) 評論(0) 推薦(1) 編輯
摘要:JVM垃圾回收的算法很多,但是不管是哪種算法,在進行GC時大致的流程都是差不多的,主要有以下3個過程: ###1. 枚舉根節點 這個過程主要是找到所有的GC Roots對象,這些對象一般發生在JVM虛擬機棧棧幀、常量池中的靜態對象、方法區中靜態類屬性引用、本地方法棧中引用的對象。這個過程會發生STW 閱讀全文
posted @ 2020-07-14 07:54 PinXiong 閱讀(39) 評論(0) 推薦(0) 編輯
摘要:在多線程的情況下,ThreadLocal提供了一個種為每個線程訪問相同的變量,并且線程對變量的更新互不影響的機制。也是對象實現線程安全的一種方式。 ###ThreadLocal的實現機制 我們常用的方法有get、set和initialValue,這次將會圍繞這幾個方法的源碼進行深入解析 get方法 閱讀全文
posted @ 2020-07-14 07:54 PinXiong 閱讀(47) 評論(0) 推薦(0) 編輯
摘要:Java虛擬機在執行Java程序的過程中會把它所管理的內存劃分成為若干個不同的數據區域。 程序計數器(Program Counter Register) 每一個線程都有一個程序計數器,各線程之間互不影響,獨立存儲,屬于線程的私有內存。如果線程正在執行一個Java方法,這個計數器記錄的是正在執行的虛擬 閱讀全文
posted @ 2020-07-14 07:53 PinXiong 閱讀(37) 評論(0) 推薦(0) 編輯
摘要:在Java虛擬機中,如果reference類型的數據中存儲的數值代表的是另外一塊內存的起始地址,就稱這塊內存代表著一個引用。一共有4類引用: 強引用(Strong Reference) 類似Object obj = new Object()這類的引用,只要強引用還存在,垃圾收集器永遠不會回收掉被引用 閱讀全文
posted @ 2020-07-14 07:53 PinXiong 閱讀(35) 評論(0) 推薦(0) 編輯
摘要:最近一直在研究AQS的源碼,希望可以更深刻的理解AQS的實現原理。雖然網上有很多關于AQS的源碼分析,但是看完以后感覺還是一知半解。于是,我將自己的整個理解過程記錄下來了,希望對大家有所幫助。 基本原理 AQS是Java中鎖的基礎,主要由兩個隊列組成。一個隊列是同步隊列,另一個是條件隊列。 同步隊列 閱讀全文
posted @ 2020-07-13 01:05 PinXiong 閱讀(143) 評論(0) 推薦(0) 編輯
摘要:同步和異步,阻塞和非阻塞是大家經常會聽到的概念,但是它們是從不同維度來描述一件事情,常常很容易混為一談。 ##1. 同步和異步 同步和異步描述的是消息通信的機制。 ###同步 當一個request發送出去以后,會得到一個response,這整個過程就是一個同步調用的過程。哪怕response為空,或 閱讀全文
posted @ 2020-07-12 16:29 PinXiong 閱讀(53) 評論(0) 推薦(0) 編輯
最新chease0ldman老人