我将JUC包中的集合类分为3部分进行讲解。在简单了解了JUC包中的集合类的框架后,后面的章节将逐步介绍各个类。List和SetMapQueue是全网唯一的公众号~公众号大数据技术和架构,帮助Java开发者从0转入大数据领域JUC(java.util.concurrent)中的List和Set实现类collectionpackage包括:CopyOnWriteArrayListCopyOnWriteArraySetConcurrentSkipListSetConcurrentSkipListSet后面Map的说明中会说明。CopyOnWriteArrayList和CopyOnWriteArraySet的框架如下图所示:CopyOnWriteArrayList相当于一个线程安全的ArrayList,实现了List接口。CopyOnWriteArrayList支持高并发。CopyOnWriteArraySet相当于线程安全的HashSet,继承自AbstractSet类。CopyOnWriteArraySet内部包含一个CopyOnWriteArrayList对象,通过CopyOnWriteArrayList实现。MapJUC集合包中Map的实现类包括:ConcurrentHashMap和ConcurrentSkipListMap。它们的框架如下图所示:ConcurrentHashMap是一个线程安全的哈希表(相当于线程安全的HashMap);它继承自AbstractMap类并实现了ConcurrentMap接口。ConcurrentHashMap是通过“锁分段”实现的,支持并发。ConcurrentSkipListMap是一个线程安全的有序哈希表(相当于一个线程安全的TreeMap);它继承自AbstractMap类并实现了ConcurrentNavigableMap接口。ConcurrentSkipListMap是通过“跳表”实现的,支持并发。ConcurrentSkipListSet是线程安全的有序集合(相当于线程安全的TreeSet);它继承自AbstractSet并实现了NavigableSet接口。ConcurrentSkipListSet由ConcurrentSkipListMap实现,同样支持并发。QueueJUC集合包中Queue的实现类包括:ArrayBlockingQueue、LinkedBlockingQueue、LinkedBlockingDeque、ConcurrentLinkedQueue和ConcurrentLinkedDeque。它们的框架如下图所示:ArrayBlockingQueue是一个由数组实现的线程安全的有界阻塞队列。LinkedBlockingQueue是一个(指定大小)阻塞队列,由单链表实现,按照FIFO(先进先出)对元素进行排序。LinkedBlockingDeque是一个(指定大小)双向并发阻塞队列,由双向链表实现。阻塞队列同时支持FIFO和FILO操作。ConcurrentLinkedQueue是一个由单向链表实现的无界队列,它按照FIFO(先进先出)的方式对元素进行排序。ConcurrentLinkedDeque是一个双向链表实现的无界队列,同时支持FIFO和FILO操作。
