jdk5的并發(fā)庫

字號(hào):


    一、傳統(tǒng)集合
    collection:
    list:ArrayList LinkedList Vector Stack
    set:HashSet TreeSet
    Map:HashMap TreeMap
    二、簡(jiǎn)單的不再多說,只說不會(huì)的!
    1、Vector: 默認(rèn)創(chuàng)建大小為10的Object數(shù)組(所以是基于數(shù)組實(shí)現(xiàn)的) add, remove方法都是添加了 synchronized關(guān)鍵字的 所以線程安全
    vector 擴(kuò)大數(shù)組 是擴(kuò)大兩倍 線程安全
    ArrayList 擴(kuò)大 *1.5+1 線程不安全
    2、Stack : 先進(jìn)后出
    繼承于Vector,所以也是線程安全的!
    push pop peek
    3
    HashSet 基于HashMap實(shí)現(xiàn),使用的是hashMap中的Key, 無容量限制 ,非線程安全
    TreeSet 基于TreeMap實(shí)現(xiàn), 支持排序 ,非線程安全
    4
    HashMap 基于Entry數(shù)組實(shí)現(xiàn), key,value 后出entry, 無容量限制,非線程安全
    TreeMap 基于 紅黑樹實(shí)現(xiàn),無容量限制,非線程安全
    三、各種實(shí)現(xiàn)方式
    ArraylIst 數(shù)組
    linkedList 雙向 鏈表
    Vector 數(shù)組
    Stack 數(shù)組
    HashSet 基于HashMap實(shí)現(xiàn)
    TreeSet 基于TreeMap 實(shí)現(xiàn)
    HashMap 基于Entry對(duì)象的數(shù)組實(shí)現(xiàn)
    TreeMap 基于 紅黑樹實(shí)現(xiàn)
    四、傳統(tǒng)集合的一些性能
    1、set 和 map 類型的查找是通過hash后,再到鏈表上查找,所以速度相對(duì)來說要快!
    2、當(dāng)數(shù)量超過萬級(jí)別:
    插入:arrayList Vector的影響比較大,其他基本沒什么變化
    查找和刪除;list 的性能下降比較嚴(yán)重,set和map基本不受影響
    五、并發(fā)集合
    以下都是線程安全的:
    ConcurrentHashMap 在每一個(gè)分段上都用鎖進(jìn)行保護(hù),從而讓鎖的粒度更精細(xì)一些,并發(fā)性能更好,而HashMap沒有鎖機(jī)制,不是線程安全的。
    CopyOnWriteArrayList 在讀寫操作無鎖的 ArrayList
    CosyOnWriteArraySet 基于CopyOnWriteArrayList實(shí)現(xiàn)
    ArrayBlockingQueue 基于數(shù)組,先進(jìn)先出,阻塞讀寫
    ArrayBlockingQueue(int capacity)創(chuàng)建一個(gè)帶有給定的(固定)容量和默認(rèn)訪問策略的 ArrayBlockingQueue。同時(shí)初始化鎖和兩個(gè)鎖上的condition,一個(gè)為notEmpty 一個(gè)為notFull
    六、原子操作
    AtomicInteger AtomicLong AtomicBoolean
    七、Executors
    newCachedThreadPool()
    創(chuàng)建一個(gè)可根據(jù)需要?jiǎng)?chuàng)建新線程的線程池,但是在以前構(gòu)造的線程可用時(shí)將重用它們。
    newFixedThreadPool(int nThreads)
    創(chuàng)建一個(gè)可重用固定線程數(shù)的線程池,以共享的無界隊(duì)列方式來運(yùn)行這些線程。
    newSingleThreadExecutor()
    創(chuàng)建一個(gè)使用單個(gè) worker 線程的 Executor,以無界隊(duì)列方式來運(yùn)行該線程。
    newScheduledThreadPool(int corePoolSize)
    創(chuàng)建一個(gè)線程池,它可安排在給定延遲后運(yùn)行命令或者定期地執(zhí)行。
    適合于:定時(shí)或者延遲的任務(wù),在異步操作中需要 超時(shí)回調(diào)的場(chǎng)景