原创 6.4 ThreadPoolExecutor線程池的關閉方法shutdown和shutdownNow區別、示例

shutdown(): 把線程池的狀態設置成SHUTDOWN狀態,然後中斷所有沒有正執行任務的線程 shutdownNow(): 首先把線程池的狀態設置成STOP,然後嘗試停止所有正在執行任務或者暫停任務的線程,並返回等待執行任務的列表

原创 6.3 線程池的execute()和submit()的區別和使用示例

execute():提交不需要返回值的任務,無法判斷任務是否被執行成功了。 submit():提交需要放回值的任務;線程會返回Future對象,通過Future的isDone()方法可以判斷任務是否執行成功,並且可以通過Future.ge

原创 6.2 線程池的擴展beforeExecute和afterExecute參數說明和使用示例

線程池ThreadPoolExecutor爲了提供擴展,提供了protected的兩個方法beforeExecute和 afterExecute,每個任務執行前後都會調用這兩個方法,相當於對線程任務的執行做了一個切面 線程池中定義的兩個空

原创 4.5.7 DelayQueue實現緩存設計

實體: public class MyDelayed implements Delayed { private String key; private long currentTime; private long

原创 6.1 線程池的優點、以及各個參數的意義、使用示例

線程池的有點:省時、省資源、更好管理線程  1、減少資源的消耗:較少線程創建和銷燬造成的消耗 2、提高響應速度:當任務到達的時候,就能夠立刻執行,減少了線程創建和銷燬的時間 3、能夠更好地管理線程 ThreadPoolExecutor 的

原创 4.5.5PriorityBlockingQueue簡介和基本使用demo

支持優先級的無界阻塞隊列:默認情況下元素採取自然順序升序排列,可以以自定義compareTo()方法來指定元素的排序規則。 demo:通過年齡比較大小,實現Comparable 實體 public class Person implem

原创 4.5.8 SynchronousQueue簡單使用示例

是一個不存儲元素的阻塞隊列。每一個put操作必須等待一個take操作,否則不能繼續添加元素。本身不存儲元素,只是負責傳遞(但是使用起來就像是隻能夠存儲一個元素的隊列) demo public class Test extends Thr

原创 4.5.6 DelayQueue簡單使用demo

支持延時獲取元素的無界阻塞隊列,隊列元素必須實現Delayed接口,在創建元素的時候可以指定多久才能從隊列中獲取當前元素。時間到了才能從隊列中獲取到元素 簡單使用 實體implements Delayed public class My

原创 4.5.3寫時複製容器CopyOnWriteArrayList和CopyOnWriteArraySet理解、有點和使用場景

理解 CopyOnWrite就是寫時複製容器。在寫入數據的時候,會從源容器複製出一個新容器,然後在新容器中添加元素,添加完成之後,再讓源容器指針指向新容器。 寫時複製容器的好處 可以對CopyOnWrite併發讀取,而不需要加鎖,因爲當前

原创 ByteBuff常用方法,使用

  目錄 引入nettyjar包 ByteBuf API 的優點: bytebuffer的四個重要屬性 Bytebuffer讀和寫的轉換 ByteBuffer相互轉換的Buffer ByteBuffer常用初始方法(沒有構造) HeapB

原创 無界不阻塞隊列ConcurrentLinkedQueue 原理、常用方法、使用示例

目錄   理解:可以看成是LinkedList的併發版本 底層原理:單項鍊表 構造方法 public ConcurrentLinkedQueue():首尾都是空的鏈表 public ConcurrentLinkedQueue(Collec

原创 TreeSet的使用方法總結、實現原理、使用示例

目錄   存儲特點:有序,不重複;key不能爲空,value可以爲null(總結一點:凡是有Tree的集合,都是有序的,凡是有Set的就是不重複的) 底層原理:使用NavigableMap,但NavigableMap只是一個接口,最終是使

原创 JApiDocs 生成父子菜單結構

目錄   默認的接口文檔是隻有一級菜單 下面是通過修改之後的多級菜單,和正式的界面一樣,方便查詢 修改方法 1、在controller上加上註釋前綴:服務:  2、從源碼中找到以下三個文件,放到/resources文件下面 修改api-c

原创 4.5.1HashMap死循環分析

注:源圖和總結來自享學課堂,自己消化之後略有補充修改 備註:基於1.7jdk進行分析 備註2:強烈建議自己跟着步驟一個圖一個圖手動畫,理解深刻一點也快一點 簡介 在多線程之下,在put操作的時候,會導致HashMap的Entry鏈表死循環

原创 ArrayList簡單使用方法總結

目錄 數據結構: 存儲特點,有序可重複 常量 構造函數: public ArrayList()  public ArrayList(Collection c)  public ArrayList(int initialCapacity)