通过并发容器来替代同步容器,可以极大地提高伸缩性并降低风险.同步容器将所有对容器状态的访问都串行化,以实现它们的线程安全性,这种方法的代价是严重降低并发性,当多个线程竞争容器的锁时,吞吐量将严重降低.
Java5.0版本中:
Concurrent-HashMap,用来替代同步基于散列的Map
CopyOnWriteArrayList,用于在遍历操作为主要操作情况下代替同步的list
在新的ConcurrentMap接口中增加了对一些常见复合操作的支持
---------------------------------------------------------------
Queue用来临时保存一组待处理的元素,提供了ConcurrentLinkedQueue,传统的先进先出队列;
以及PriorityQueue,优先队列(非并发的)
Queue上的操作不会阻塞,如果队列为空,那么获取元素的操作将返回空值,其底层用的就是LinkedList实现的.
---------------------------------------------------------------
BlockingQueue扩展了Queue,增加了可阻塞的插入和获取的操作,如果队列为空,那么获取元素的操作将一直阻塞,直到队列中出现一个可用的元素.如果队列已满,那么插入元素的操作将一直阻塞,直到队列中出现一个可用空间.
Java6.0版本中引入了ConcurrentSkipListMap和ConcurrentSkipListSet,分别作为同步的SortedMap和SortedSet的并发替代品(例如,用synchronizedMap包装的TreeMap或TreeSet)