原创 12、tomcat自檢題目

一、tomcat原理篇 1.1 爲什麼tomcat需要自定義線程池org.apache.catalina.core.StandardThreadExecutor? 實際上其內部執行任務的仍然是JDK的ThreadPoolExecu

原创 9、CountDownLatch

一、類圖 從類圖中可以看到CountDownLatch有一個內部類Sync,那麼可以肯定CountDownLatch是基於AQS來實現的 以下爲CountDownLatch的構造函數 public CountDownLatch(

原创 7、Semaphore

一、類圖 很簡單,內部持有實現了AbstractQueuedSynchronizer的Sync,Sync爲Semaphore的內部類,它沒有什麼特殊的成員變量,實現了基本的獲取許可與釋放的邏輯 二、許可的獲取與釋放 2.1 獲取

原创 14、ScheduledThreadPoolExecutor

一、前言 ScheduledThreadPoolExecutor是基於ThreadPoolExecutor實現的,在學習ScheduledThreadPoolExecutor時,請先移步到第11節學習ThreadPoolExecu

原创 13、DelayQueue

一、類圖 在學習延時隊列之前,先移步到第12節學習 PriorityQueue Iterable:可迭代的,聲明實現此接口的類具有迭代元素的能力,在JDK8之後增加了默認方法forEach與spliterator,forEac

原创 3、HashMap

一、HashMap基礎 1.1 簡介 Map:定義基本的增刪除改查操作 AbstractMap:模板方法,實現了一些基本方法 HashMap是使用數組+鏈表+紅黑樹的方式構成的,它與ConcurrentHashMap的主要區

原创 5、JDK併發鎖之AQS與獨佔鎖

一、AbstractQueuedSynchronizer基礎 1.1 父類AbstractOwnableSynchronizer /* * @since 1.6 * @author Doug Lea */ public a

原创 12、PriorityQueue

一、基礎 1.1 類圖 Iterable:可迭代的,聲明實現此接口的類具有迭代元素的能力,在JDK8之後增加了默認方法forEach與spliterator,forEach用於遍歷元素,spliterator用於分割迭代器,通

原创 10、SynchronousQueue

一、類圖 SynchronousQueue從字面意思上來將就是一個同步隊列,啥是同步隊列?你只要往同步隊裏中添加元素,你的線程就會被阻塞,直到另外一個線程去獲取對應的元素並喚醒這個 線程。根據獲取元素的順序,同步隊列也分爲公平與

原创 6、JDK併發鎖之讀寫鎖

一、前言     前一節我們分析了AQS併發框架和獨佔鎖以及condition的實現,爲我們繼續往下分析併發包中其他的類打下了基礎,現在我們趁熱打鐵,分析一下讀寫鎖。 二、基礎 2.1 類圖 ReadWriteLock:定義了

原创 8、CyclicBarrier

一、類圖 1.1 CyclicBarrier類基礎 //珊欄 public class CyclicBarrier { //內部類,表示代,每次珊欄內線程容量達到指定容量後會進行換代,就簡單理解爲改朝換代吧

原创 11、ThreadPoolExecutor

一、基礎 1.1 類圖 1.1.1 Executor public interface Executor { //提交一個實現了Runnable的任務,異步執行 void execute(Runnable co

原创 4、ArrayList

一、簡介 ArrayList顧名思義,數組列表,它是由數組實現的一個List,下面是它的一些成員變量 //默認的初始化容量 private static final int DEFAULT_CAPACITY = 10; //空

原创 2、TreeMap

一、簡介     TreeMap是一個有序的Map,它直接由紅黑樹構成,所以學習 TreeMap只要學會紅黑樹就可以了,下面是TreeMap的類圖 Map:定義基本的增刪除改查操作 AbstractMap:模板方法,實現了一些

原创 10、Netty內存池之PoolChunk與PoolSubPage

一、原理 請移步到《netty的內存池設計》 二、PoolChunk與PoolSubPage 2.1 PoolChunk 2.1.1 簡介 PoolChunk表示一個內存塊,默認16M,用於管理分配內存,以下爲PoolChunk的