(1) 接口Iterable:主要作用是迭代循环。声明了一个iterator()方法进行循环处理。 (2) 接口Collection:提供了集合框架最主要和常用的操作,例如size(),add(),isEmpty()等等。 (3) 接口List:对Collection接口进行了扩展,允许根据索引位置操作数据,并且内容允许重复。List最常用的非并发实现类就是ArrayList,它是非线程安全的。如果要使用线程安全的链表可以使用Vector类。 (4) 接口Set:对Collection接口进行了扩展,特点是内容不允许重复,排序方式为自然排序。实现类hashset是不支持并发操作的。LinkedHashSet可以有序的组织元素。TreeSet实现了sortedSet接口,可以对元素进行排序。 (5) 接口Queue:对Collection接口进行了扩展,它的特点是可以方便的操作列头。实现类PriorityQueue是非并发的。 (6) 接口Deque:支持对表头和表尾的操作,又名“双端队列”。非并发实现类有ArrayDeque和LinkedList。
在JDK并发包中,常见的非阻塞队列有: (1) ConcurrentHashMap:是支持并发操作的Map对象。Hashtable类也是线程安全的类,与ConcurrentHashMap的区别:当多个线程分别调用该类的iterator()方法返回Iterator对象后,再调用remove()时会出现ConcurrentModificationException异常,也就是说Hashtable不支持Iterator并发的删除,但是ConcurrentHashMap是支持的。 (2) ConcurrentSkipListMap:是支持排序的Map。 (3) ConcurrentSkipListSet:是支持排序而且不允许重复元素的。 (4) ConcurrentLinkedQueue:提供的是并发环境的队列操作。 (5) ConcurrentLinkedDeque:支持队头和队尾的双重操作。 (6) CopyOnWriteArrayList:是线程安全的ArrayList。 (7) CopyOnWriteArraySet:是解决多线程情况下HashSet不安全的问题。
(1) 类ArrayBlockingQueue:提供一种有界阻塞队列的功能。 (2) 类PriorityBlockingQueue:支持在并发情况下的优先级队列。 (3) 类LinkedBlockingQueue:是无界的。 (4) 类LinkedBlockingDeque:提供对双端结点的操作,两者都具有阻塞特性。 (5) 类SynchronousQueue:是异步队列,每个插入操作必须等待另一个线程的对应移除操作,不能在同步队列上进行peerk,也不能迭代队列。 常被使用在多个线程之间传输数据时。 (6) 类DelayQueue:提供一种延时执行任务的队列。 (7) 类LinkedTransferQueue:提供的功能和SynchronousQueue类似,但是具有嗅探功能,可以常识性的添加一些数据。