做后台服务器开发已有好几年,慢慢的对多线程和集合有了一些理解,是时候抽点时间来整理下这方面的知识了。
关于线程安全的集合,确切的来说在JDK1.5之前是没有的,虽然对于大家熟悉的有Vector,HashTable,但是在多线程下会出现一些问题,比如常见的ConcurrentModificationException。
JDK1.5之后java.util.concurrent包下多了很多线程安全的集合类,JDK1.6之后又增加了一些。有了这些类我们在处理多线程下集合的时候方便了很多也高效了很多。
除去抽象类和接口不算,有如下容器类(按字母排序)
1.ArrayBlockingQueue 基于数组的阻塞队列
2.ConcurrentHashMap 线程安全的HashMap
3.ConcurrentLinkedQueue 基于链表的队列,线程安全的
4.ConcurrentSkipListMap
5.ConcurrentSkipListSet
6.CopyOnWriteArrayList
7.CopyOnWriteArraySet
8.LinkedBlockingDeque
9.LinkedBlockingQueue
10.PriorityBlockingQueue
11.SynchronousQueue
考虑到内容比较多,所以准备分篇说明
后续每篇都会围绕四个点来阐述
一、基本思想
二、源码解析
三、适用范围
四、测试
虽然时间有限,如果有必要,我还是会尽量完成四个部分的内容