原创 Java 泛型小結

目錄 泛型的定義 泛型分類 限定泛型類型變量 泛型的意義 泛型的原理 泛型中的約束和侷限性 泛型的定義 泛型,即“參數化類型”。就是將程序需要的類型參數化,類似於方法中的變量參數,此時類型也定義成參數形式(可以稱之爲類型形參),然後在使用

原创 Java中的異常(checked異常和unchecked異常)

目錄 Java的異常層次結構  最常用的五種RuntimeException unchecked異常和checked異常的區別 爲什麼要對unchecked異常和checked異常進行區分? Java的異常層次結構 要想明白Java中ch

原创 負數的二進制、二進制轉十六進制、Java中的運算符

目錄 1 數字的二進制 1.1 正數 1.2 負數 2 二進制轉十六進制 3 Java中的運算符 3.1 與運算符& 3.2 或運算符| 3.3 非運算符~ 3.4 異或運算符^ 3.5 位移運算符<< 3.6 位移運算符>> 3.7 位

原创 【JUC阻塞隊列】ConcurrentLinkedQueue

目錄 1 前言 2 隊列結構 3 入隊——offer()方法 3.1 入隊過程 3.2 offer()源碼 3.3 tail並非一直指向尾結點的意圖 4 出隊——poll()方法 4.1 出隊過程 4.2 poll()源碼 5 其它方法

原创 【定時任務】時間輪算法

目錄 1 從定時任務說起 2 初識時間輪 3 絕對時間和相對時間 4 需要重複執行多次的任務 5 同一時刻存在多個任務 6 時間輪的數據結構 7 時間刻度不夠用怎麼辦? 7.1 增大時間輪的刻度 7.2 列表中的任務中添加round屬性—

原创 【Java併發工具】Semaphore

目錄 1 前言 2 應用場景 3 其它方法 4 實現原理 4.1 實現的同步器 4.2 執行過程 1 前言 本人使用jdk8版本。 Semaphore(信號量)是用來控制同時訪問特定資源的線程數量,它通過協調各個線程,以保證合理的使用公共

原创 【Java併發工具】CyclicBarrier

目錄 1 前言 2 示例 3 實現原理 3.1 成員變量 3.2 構造方法 3.3 await方法 3.4 reset方法 4 CyclicBarrier和CountDownLatch的區別 1 前言 本人使用jdk8版本。 Cyclic

原创 【Java併發工具】CountDownLatch

目錄 1 前言 2 功能介紹 3 基於AbstractQueuedSynchronizer的實現 3.1 同步器Sync 3.2 構造方法 3.3 await方法 3.4 countDown方法 4 一次性使用 1 前言 本人使用jdk8

原创 【Java NIO】網絡IO模型與Java中的NIO之間的聯繫

目錄 1 前言 2 五種網絡IO模型 2.1 阻塞IO模型(BIO) 2.2 非阻塞IO(NIO) 2.3 多路複用IO模型 2.4 異步IO(AIO) 2.5 信號驅動IO模型 3 Java NIO與IO的區別 3.1 面向流與面向緩衝

原创 【JUC阻塞隊列】ArrayBlockingQueue和LinkedBlockingQueue

目錄 Java中的阻塞隊列 1 ArrayBlockingQueue 1.1 成員變量 1.2 構造方法 1.3 put方法 1.4 take方法 2 LinkedBlockingQueue 2.1 成員變量 2.2 構造方法 2.3 p

原创 【JVM】Java 關於強引用,軟引用,弱引用和虛引用的區別與用法

目錄 一、引用的概念 二、引用到底有什麼作用 三、弱引用的 GC 實戰 四、再理解 ThreadLocalMap 的弱引用 五、ReferenceQueue 引用隊列 六、應用場景 總結 內容來自:https://blog.csdn.ne

原创 【Java多線程實戰設計】用三個線程按順序循環打印abc三個字母,比如abcabcabc

目錄 1 思路 2 synchronized/wait/notifyAll 機制 3 ReentrantLock/Condition.await()/Condition.signalAll() 機制 1 思路 啓動三個線程,採用多線程間等

原创 【Executor框架】Java中的線程池(ThreadPoolExecutor實現原理、使用、狀態維護)

目錄 1 爲什麼使用線程池 2 線程池的實現原理 3 線程池的使用 3.1 線程池的創建 3.2 向線程池提交任務 3.3 關閉線程池 3.4 合理的配置線程池 3.5 線程池的監控 4 線程池狀態維護 本人使用的jdk版本爲8。 1 爲

原创 【Java多線程】銀行家算法

目錄 銀行家算法中的數據結構  算法過程 安全性算法  例子 以下內容摘自:湯子瀛的《計算機操作系統》第三版。 最有代表性的避免死鎖的算法,是 Dijkstra 的銀行家算法。爲實現銀行家算法,系統中必須設置若干數據結構。  銀行家算法中

原创 Atomic原子類及原理

目錄 1 前言 2 unsafe類對Atomic原子類的支持 3 AtomicInteger的內部實現 3.1 準備 3.2 讀 3.3 寫 4 CAS機制 4.1 基本操作數 4.2 例子 4.3 缺點 1 前言 當一個線程更新一個變量