原创 多線程編程六-線程池的使用

目錄   1 JDK自帶的線程池 2 七大參數簡介: 3 線程池工作流程 4 自定義拒絕策略 5 和spring整合 6 合理配置線程數 1 JDK自帶的線程池 我們知道JDK可以通過Executors類來創建線程池,但是這些線程池都有缺

原创 JUC併發工具七-ConcurrentLinkedQueue和ConcurrentLinkedDeque

目錄   1 隊列概述 2 ConcurrentLinkedQueue 2.1 offer方法 ​2.2 poll方法 2.3 remove方法 2.4 peek方法 2.5 element方法 3 ConcurrentLinkedDeq

原创 JUC併發工具九-Atomic類

目錄   1 Atomic類作用 2 AtomicInteger使用 2.1 AtomicInteger用法 2.2 AtomicInteger原理 2.2.1 重要成員變量 2.2.2 addAndGet方法 2.3 AtomicInt

原创 JUC併發工具八-ConcurrentHashMap原理簡析

目錄 1 幾個重要的狀態值 1.1 每個槽點頭結點的hash值 1.2 sizeCtl 2 源碼鑑賞 2.1 put方法 2.2 初始化table 2.3 擴容 2.3.1 協助擴容(helpTransfer) 2.3.2 擴容(tran

原创 java集合類三-聊聊HashMap

目錄   1 HashMap數據結構 2 構造函數 3 put方法 4 鏈表和紅黑樹互相轉換 5 hashmap擴容 1 HashMap數據結構 HashMap底層是通過數組和單向鏈表來實現的。HashMap底層是一個數組,數組的每一項又

原创 多線程編程四-生產消費模型

目錄 1 定義生產者 2 定義消費者 3 定義admin接口 4 SynchronizedAdmin實現 5 ReentrantLockAdmin實現 6 測試程序 本次生產消費模型分別用synchronized和ReentrantLoc

原创 java集合類五-ArrayList和HashMap線程不安全

目錄   1 不安全集合ArrayList 1.1 不安全現象1:元素丟失 1.2 不安全現象2:ConcurrentModificationException 2 不安全集合HashMap 2.1 不安全現象1:元素覆蓋 2.2 不安全

原创 java集合類六-LinkedHashMap和LRU

目錄   1 LinkedHashMap有序 2 LRU機制介紹 3 LinkedHashMap原理 3.1 put方法 3.2 get方法 1 LinkedHashMap有序 LinkedHashMap是有序的原因是LinkedHash

原创 JUC併發工具十一-阻塞隊列

目錄 1 ArrayBlockingQueue使用及原理 1.1 ArrayBlockingQueue使用 1.2 核心方法概覽 1.2.1 add和offer 1.2.2 帶有超時時間的offer方法 1.2.3 put方法 1.2.4

原创 JUC併發工具四-ReadWriteLock

目錄   1 讀寫鎖規則 2 認識ReadWriteLock接口 3 寫鎖Sync類中基本變量 4 寫鎖加鎖方法 5 寫鎖解鎖方法 6 讀鎖加鎖方法 7 讀鎖釋放 1 讀寫鎖規則 讀-讀可以共存,讀-寫不能共存,寫-寫不能共存2 讀寫鎖使

原创 多線程編程一-創建線程的三種方式

目錄 1 繼承Thread類 2 實現Runnable接口 3 線程啓動原理 3.1 start 方法 3.2 run方法 4 實現Callable接口 4.1 Callable初步使用 4.2 Callable方法原理 4.2.1 Fu

原创 多線程編程七-Furture模式

Furture模式是把一個任務拆成多個子任務,沒有依賴關係的子任務來並行執運行的模式,旨在提高程序處理效率 假如說做飯需要三步,買菜(2秒)、買油(3秒)、炒菜(4秒)三步,其中買菜、買油可以兩個人同時做,炒菜依賴買菜、買油的結果。 p

原创 多線程編程五-線程本地化(ThreadLocal)的使用

目錄   1 ThreadLocal概述 2 ThreadLocal使用 3 ThreadLocal原理 3.1 set方法 3.2 get方法 3.3 remove方法  4 使用ThreadLocal注意事項 1 ThreadLoca

原创 spring學習二-spring三級緩存和循環依賴

1 循環依賴介紹 循環依賴是指兩個或兩個以上bean互相持有對方最終形成閉環。比如A依賴B,B依賴C,C依賴A 循環依賴包括構造器依賴和屬性依賴 2 三級緩存解決循環依賴 2.1 spring創建Bean步驟 spring創建bean主

原创 ArrayList與Vector的使用及源碼解析

1、構造方法 (1)public ArrayList():初始化一個容量爲空的容器 public ArrayList() { this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDAT