容器

1. Collection

2. Map

  Map容器: HashMap,TreeMap    线程不安全
  HashTable,ConcurrentHashMap,ConcurrentSkipListMap  线程安全
  HashTable: synchronized 锁
  ConcurrentHashMap,ConcurrentSkipListMap:CAS 自旋锁
  
  Collection容器: List,Set,Queue
  List:
  线程不安全:
        ArrayList
        LinkedList
  线程安全:
       Vector : sychronized 锁
       Collections.synchronizedList   synchronized 锁
       CopyOnWriteArrayList  ReentrantLock CAS自旋锁, 适用于读多写少的情况,写时加锁,读时不加锁
       
  Set:
  线程不安全:
  HashSet,TreeSet,LinkedHashSet  
  线程安全:
  Collections.synchronizedSet   synchronized 锁
  CopyOnWriteArraySet   ReentrantLock CAS自旋锁, 适用于读多写少的情况,写时加锁,读时不加锁
  concurrentSkipListSet    
  
  Queue:
  线程安全:
  ConcurrentQueue:
        ConcurrentLinkedQueue: 最大Integer.MAX_VALUE    offer,poll,peek
        ConcurrentArrayQueue: 有界    offer,poll,peek
  
  阻塞队列
  BlockingQueue:
        ArrayBlockingQueue:  有界    offer,poll,peek,   put: 阻塞   take: 阻塞
        LinkedBlockingQueue: 最大Integer.MAX_VALUE     offer,poll,peek,   put: 阻塞   take: 阻塞
  
  延时队列
  DelayQueue:
        用来装任务的,  任务需要实现Delayed 接口,重写compareTo 方法和 getDelay方法,
        按着从小到大排序后的时间进行执行
  
  SynchronusQueue,TransferQueue:
     SynchronusQueue: 只能put一个元素,  调用put 方法时,是阻塞的,直到有线程 take的时候,才解除阻塞状态
        TransferQueue: 可以put多个元素, 每一个put都是阻塞的,直到有线程 take 该元素的时候,才解除阻塞状态

你可能感兴趣的:(容器)