原创 Java併發包源碼學習系列:同步組件Semaphore源碼解析

目錄Semaphore概述及案例學習類圖結構及重要字段void acquire()非公平公平策略void acquire(int permits)void acquireUninterruptibly()void acquireUninte

原创 Java併發包源碼學習系列:同步組件CyclicBarrier源碼解析

目錄CyclicBarrier概述案例學習類圖結構及重要字段內部類Generation及相關方法void reset()void breakBarrier()void nextGeneration()int await()int await

原创 Java併發包源碼學習系列:同步組件CountDownLatch源碼解析

目錄CountDownLatch概述使用案例與基本思路類圖與基本結構void await()boolean await(long timeout, TimeUnit unit)void countDown()總結參考閱讀 CountDown

原创 Java併發包源碼學習系列:線程池ScheduledThreadPoolExecutor源碼解析

目錄ScheduledThreadPoolExecutor概述類圖結構ScheduledExecutorServiceScheduledFutureTaskFutureTaskschedulevoid delayedExecute(task

原创 Java併發包源碼學習系列:線程池ThreadPoolExecutor源碼解析

目錄ThreadPoolExecutor概述線程池解決的優點線程池處理流程創建線程池重要常量及字段線程池的五種狀態及轉換ThreadPoolExecutor構造參數及參數意義Work類void execute(Runnable comman

原创 Java併發包源碼學習系列:基於CAS非阻塞併發隊列ConcurrentLinkedQueue源碼解析

目錄非阻塞併發隊列ConcurrentLinkedQueue概述結構組成基本不變式head的不變式與可變式tail的不變式與可變式offer操作源碼解析圖解offer操作JDK1.6 hops設計意圖poll操作源碼解析圖解poll操作總結

原创 Java併發包源碼學習系列:阻塞隊列實現之LinkedBlockingDeque源碼解析

目錄LinkedBlockingDeque概述類圖結構及重要字段linkFirstlinkLastunlinkFirstunlinkLastunlink總結參考閱讀 系列傳送門: Java併發包源碼學習系列:AbstractQueuedS

原创 Java併發包源碼學習系列:阻塞隊列實現之LinkedTransferQueue源碼解析

目錄LinkedTransferQueue概述TransferQueue類圖結構及重要字段Node節點前置:xfer方法的定義隊列操作三大類插入元素put、add、offer獲取元素take、polltransfer、tryTransfer

原创 Java併發包源碼學習系列:阻塞隊列實現之SynchronousQueue源碼解析

目錄SynchronousQueue概述使用案例類圖結構put與take方法void put(E e)E take()Transfer公平模式TransferQueueQNodetransferawaitFulfilltryCancelcl

原创 Java併發包源碼學習系列:阻塞隊列實現之DelayQueue源碼解析

目錄DelayQueue概述類圖及重要字段Delayed接口Delayed元素案例構造器void put(E e)E take()first = null 有什麼用總結參考閱讀 系列傳送門: Java併發包源碼學習系列:AbstractQ

原创 Java併發包源碼學習系列:阻塞隊列實現之PriorityBlockingQueue源碼解析

目錄PriorityBlockingQueue概述類圖結構及重要字段什麼是二叉堆堆的基本操作向上調整void up(int u)向下調整void down(int u)構造器擴容方法tryGrow源碼中向上調整和向下調整實現siftUpCo

原创 Java併發包源碼學習系列:阻塞隊列實現之ArrayBlockingQueue源碼解析

目錄ArrayBlockingQueue概述類圖結構及重要字段構造器出隊和入隊操作入隊enqueue出隊dequeue阻塞式操作E take() 阻塞式獲取void put(E e) 阻塞式插入E poll(timeout, unit) 阻

原创 Java併發包源碼學習系列:阻塞隊列實現之LinkedBlockingQueue源碼解析

目錄LinkedBlockingQueue概述類圖結構及重要字段構造器出隊和入隊操作入隊enqueue出隊dequeue阻塞式操作E take() 阻塞式獲取void put(E e) 阻塞式插入E poll(timeout, unit)

原创 Java併發包源碼學習系列:阻塞隊列BlockingQueue及實現原理分析

目錄本篇要點什麼是阻塞隊列阻塞隊列提供的方法阻塞隊列的七種實現TransferQueue和BlockingQueue的區別1、ArrayBlockingQueue2、LinkedBlockingQueue3、PriorityBlocking

原创 Java併發包源碼學習系列:JDK1.8的ConcurrentHashMap源碼解析

目錄爲什麼要使用ConcurrentHashMap?ConcurrentHashMap的結構特點Java8之前Java8之後基本常量重要成員變量構造方法tableSizeForput方法存值putValinitTabletreeifyBin