Java中容器不同并发情况下的选择

  作者:记性不好的阁主

一、map/set的选择


无并发条件下:

HashMap

TreeMap

LinkedHashMap


并发量比较小的条件下:

Hashtable

Collections.synchronized()


并发量比较大的条件下:

ConcurrentHashMap      (无序高并发)

ConcurrentSkipListMap  (有序高并发)



二、队列


无并发条件下:

ArrayList

LinkedList


并发量比较小的条件下:

Vector

Collections.synchronize()


并发量比较大的条件下:

Queue

          ConcurrentLinkedQueue

          BlockingQueue

                                  LinkedBlockingQueue (无界)

                                  ArrayBlockingQueue   (有界)

                                  TransferQueue   (直接交给消费者线程执行,无消费者线程则阻塞)

                                  SynchronizedQueue   (容量为0)

          DelayQueue    (定时)


CopyOnWriteList   (写少读多)


相关推荐

评论 抢沙发

表情

分类选择