原创 juc併發工具三-ReentrantLock

目錄   1 重入鎖概述 2 非公平鎖加鎖 3 公平鎖加鎖 4 釋放鎖  5 公平鎖和非公平鎖比較 1 重入鎖概述 ReentrantLock加鎖解鎖就是AQS實現的Sync同步工具類 在ReentrantLock中,state如果等於0

原创 java集合類四-TreeSet與TreeMap的使用

目錄   1 TreeSet實現自動排序 2 TreeMap實現自動排序 1 TreeSet實現自動排序 @Test public void testCalculate() { Student stu1

原创 JUC併發工具六-CopyOnWrite集合

顧名思義,採用寫時複製技術,讀的時候不加鎖,寫數據的時候先加鎖,把當前數據複製一份進行寫操作,寫完畢後替換當前的數據,然後釋放鎖。 這種集合適用於讀多寫少的場景。寫數據的時候比較佔空間,典型的拿控件換時間。 常用的集合有 CopyOnWr

原创 多線程編程二-線程的生命週期

線程有5個狀態 創建狀態: Thread thread = new Thread(); 就緒狀態: thread.start(); 運行狀態: CPU調度處於就緒狀態的線程時纔是進入運行狀態 阻塞狀態: 處於運行狀態中的線程由於某種原因,

原创 多線程編程八-父子線程怎麼共享數據(InheritableThreadLocal的使用)

在前面文章中我們已經通過ThreadLocal來實現線程級別的數據共享。那麼如果子線程想訪問父線程的數據該怎麼做呢,InheritableThreadLocal可以幫助我們實現 1 InheritableThreadLocal的使用 測試

原创 Netty入門一-NIO入門

目錄   1 nio簡介 1.1 緩衝區(Buffer) 1.2 通道(Channel) 1.2.1 通道的主要實現類 1.2.2 獲取通道 1.2.3 通道之間的數據傳輸 1.2.4 分散(Scatter)與聚集(Gather) 1.2

原创 一、一致性哈希算法

目錄   1 一致性哈希算法用途 2 一致性哈希算法介紹 3 一致性哈希算法實現 3.1 排序算法+二分查找 3.2 直接遍歷 3.3 二叉查找樹 4 TreeMap實現一致性哈希 4.1 紅黑樹介紹 4.2 哈希再計算 4.3 一致性哈

原创 多線程編程三-線程的狀態切換

目錄   1 線程停止 2 線程讓步 3 線程加入 4 線程通信(wait和notify) 1 線程停止 Thread的stop方法已過時,通常情況下需要程序員自己寫一些方法讓線程停止。 通常可以在線程內部做一個flag標識,通過flag

原创 JUC併發工具十-常用的併發控制工具CountDownLatch,CyclicBarrier和Semaphore

目錄 1 CountDownLatch類使用 1.1 CountDownLatch用法 1.2 CountDownLatch原理 1.2.1 構造方法 1.2.2 countDown方法 1.2.3 await方法 1.3 CDL不可重複

原创 JUC併發工具五-synchronize和lock區別

1 synchronize是jvm層面,底層是monitorenter和monitorexit實現的;lock是具體類,api層面的鎖 2 synchronize不需要手動釋放鎖,當鎖住的代碼塊兒執行完後就會自動釋放。lock則需要手動調

原创 Comparable和Comparator接口的使用

1 Comparable接口的說明 Integer,Character,String,Date都實現了Comparable接口 Integer按照數字大小排序; Character按照字符對應的asci碼進行排序; String先按照子母

原创 spring學習一-Bean的生命週期

①spring啓動的時候會找到管理的bean,把管理的bean(前提是scope=singleton)實例化到內存 ②設置bean的屬性 ③如果你實現了bean名字關注接口(BeanNameAware) 則,可以通過setBeanName

原创 juc併發工具二-AQS

目錄   1 AQS概述 2 模板方法模式 2.1 獨佔方式獲取資源 2.2 獨佔方式釋放資源 2.3 共享方式獲取資源 2.4 共享方式釋放資源 1 AQS概述 AQS全稱即AbstractQueuedSynchronizer,抽象隊列

原创 JUC併發工具一-jvm內存模型和CAS機制

目錄   1 jvm內存模型 1.1 可見性 1.2 原子性 1.3 有序性 2 CAS機制 1 jvm內存模型 java內存模型規定所有變量都存在主內存中,主內存是所有線程共享的內存,但是線程對內存數據的操作(讀寫)是在工作內存中進行的

原创 spring學習三-AOP之面向切面編程

目錄   1 AOP的使用 1.1 沒有異常通知 1.2 有異常通知 2 AOP源碼簡析 2.1 從EnableAspectJAutoProxy註解說起 2.2 導入的AspectJAutoProxyRegistrar類 2.3 Anno