Collection

基础 #

物理容器
    数组
    链表
Java容器
    Collection
        List
            ArrayList
            Vector                          # JDK1.0,所有方法加synchronized
                Stack
            LinkedList
            CopyOnWriteList                 # 写时复制整个list, 写加锁读无锁, 无fail-fast
        Set
            HashSet
                LinkedHashSet
            SortedSet
                TreeSet
            EnumSet
            CopyOnWriteArraySet
            ConcurrentSkipListSet
        Queue                               # 相比List添加线程友好API
            Deque                           # 双端队列
                ArrayDeque
                BlockingDeque
                    LinkedBlockingDeque
            BlockingQueue                   # LockSupport实现, channel, 生产者消费者
                SynchronousQueue            # 锁实现, 无缓冲区channel
                TransferQueue               # CAS, 生产者带队列阻塞
                    LinkedTransferQueue
                ArrayBlockingQueue          # 有缓冲区channel
                DelayQueue                  # 内部维护按时间排序队列
                PriorityBlockingQueue
                LinkedBlockingQueue         # 最大数量Integer.MAX_VALUE
            PriorityQueue                   # 堆排序实现
            ConcurrentLinkedQueue           # CAS
    Map
        HashMap
            LinkedHashMap                   # 双向链表,按插入或访问顺序遍历
        Hashtable                           # JDK1.0,所有方法加synchronized
        ConcurrentHashMap                   # CAS, 写慢、读快
        ConcurrentSkipListMap               # 有序, 没有concurrentTreeMap因为CAS红黑树难实现
        TreeMap                             # 有序,红黑树, 查找效率高。
        WeakHashMap
        IdentityHashMap
工具类
    Collections
        synchronizedMap(Map)                # 内部mutex加synchronized

Queue #

方法
    add()                                   # 满了报异常
    boolean offer()                         # 返回是否成功
    boolean offer(long, TimeUnit)           # 返回是否成功
    poll()
    peek()
    element()                               # 同peek(), 但空时报错
    remove()

BlockingQueue #

方法
    put()                                   # 阻塞
    take()                                  # 阻塞
TransferQueue
    transfer()
    take()
    getWaitingConsumerCount()               # 阻塞的消费者长度