本文共 1075 字,大约阅读时间需要 3 分钟。
JUC包中的主要内容
一、并发集合类(Queue、ConcurrentMap)
二、线程池(Callable、Future、Executor)
三、信号量(CountDownLatch、CyclicBarrier、Semapherre)
四。原子类操作(AtomInteger)
五、锁操作(Lock,Condition、ReadWriteLock)
一、并发集合包
集合框架
最大的父类是Collection和Map两大家族,Collection又分为Set(集合)和List(队列)
1、List的实现类有:ArrayList,LinkedList,Vector,Stack
(1)ArrayList是一个动态数组,非线程安全,适用于单线程
(2)LinkedList双向链表,非线程安全,适用于单线程
(3)Vector:矢量数组,线程安全的,支持并发操作
(4)Stack:是vector实现的栈,是线程安全的
2、Set的实现类有:HashSet、TreeSet
(1)HashSet:无重复数据的集合,底层通过HashMap实现,其实质是HaspMap键的映射,非线程安全的,适用于单线程
(2)TreeSet:也是一个无重复数据的集合,但是TreeSet是有序的,底层通过TreeMap实现,非线程安全,适用于单线程
3、Map的实现类有:HashMap、TreeMap、HashTable、WeakHashMap、ConcurrentMap
(1)HaspMap:以“键-值”形式存储的哈希表,非线程安全,适用于单线程,在HashTable基础上修改的
(2)Hashtable:也是以“键-值”形式存储的哈希表,线程安全的,支持并发操作
(3)TreeMap:也是以“键-值”形式存储的哈希表,但是其键值对是有序的,它是通过红黑树来实现的,非线程安全
(4)WeakHashMap:也是哈希表;和HashMap不同的是,HashMap的“键”是强引用类型,而WeakHashMap的“键”是弱引用类型,也就是说当WeakHashMap 中的某个键不再正常使用时,会被从WeakHashMap中被自动移除,WeakHashMap也不是线程安全的,只适用于单线程。
在JUC中大部分的类是非线程安全的,但是并发大师Doug Lea还在JUC中添加了java集合包中单线程类对应的支持高并发的类
ArrayList《-------》CopyOnWriteArrayList
HashMap《------》ConcurrentHashMap