并发容器

总结:


1.并发容器 : 
--并发性不是特别高时候使用这两个
Hashtable
Collections.sychronizedXXX  //传人一个容器,返回一个加锁的容器


--并发性要求比较高使用
ConcurrentHashMap //当容器不需要排序
ConcurrentSkipListMap //高并发并且排序

Hashtable比ConcurrentHashMap慢的原因
Hashtable是锁定整个容器,而ConcurrentHashMap是默认把容器分成16段
当多个线程同时往里面插的时候,只是锁定其中的一段,可以多个线程同时并发的插进其中的几段


CopyOnWriteArrayList //多线程环境下,写时效率低,读时效率高,适合写少读多的环境


2.Queue:并发队列

Queue: 有两种队列

--ConcurrentLinkedQueue: 非阻塞式的并发队列,内部加锁

        --offer(): 相当于add()方法
        --poll(): 拿出来一个并删除
        --peek(): 拿出来不删除
 --BlockingQueue: 阻塞式并发队列--使用生产者消费者模式
         --LinkedBQ:链表实现,无限队列 
         --ArrayBQ: 数组实现, 有限队列
         --DelayQueue: 执行定时任务,可以设置多长时间被消费者拿走
         --LinkedTransferQueue: 生产者生产一个直接给消费者,应用情形:消费者先启动,生产者生产一个东西的时候不是往队列里面放,而是查看有没有消费者,如果有消费者就不往队列里面放了,直接给消费者消费
        --SynchronousQueue(特许的LinkedTransferQueue): 跟LinkedTransferQueue基本一样,都是先启动消费者,不同的是SynchronousQueue的容量为零,不能调用add()等方法向容器添加元素,只能调用put()方法来阻塞等待消费者消费。而LinkedTransferQueue向容量添加元素,也可以使用transfer()方法阻塞等待消费者消费



------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

同步容器类


1:Vector Hashtable :早期使用synchronized实现 
2:ArrayList HashSet :未考虑多线程安全(未实现同步)
3:HashSet vs Hashtable StringBuilder vs StringBuffer
4:Collections.synchronized***工厂方法使用的也是synchronized


使用早期的同步容器以及Collections.synchronized***方法的不足之处,请阅读:
http://blog.csdn.net/itm_hadf/article/details/7506529


使用新的并发容器
http://xuganggogo.iteye.com/blog/321630


5:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值