1,Vector,线程同步,原子操作。组合操作不一定原子性。
2,ConcurrentLinkedQueue,并发容器,原子操作。
3,没有并发时:
HashMap可以加锁
TreeMap排好顺序
并发时:
HashTable整个容器上锁,效率低
ConcurrentHashMap,高并发不排序
ConcurrentSkipListMap高并发并且排序,跳表排序
4,CopyOnWriteArrayList去的效率高,写的效率低,不用加锁,是产生一个新容器,改变指向。
5,BlockQueue,阻塞式队列,put,get会阻塞,类似生产者和消费中中,满了就等待,空了就等待。
LinkedBlockQueue无界队列
ArrayBlockQueue有界队列
put阻塞,add报错,offer返回false,offer带一段时间,这段时间内不成功,就返回false。
6,DelayQueue无界队列
可以做定时执行任务。
7,TransferQueue
转移队列,可以直接给消费者,不放入队列,效率更高。
strs.transfer();但是如果没有消费者,找不到消费者,会阻塞。
strs.put();不会阻塞。
netty里transfer()用的比较多。
8,SynchronousQueue特殊的TransferQueue
这个队列容量为0,没有消费者,add()报错,put()不报错,会阻塞。