java常用并发类的使用与替换

来源:互联网 发布:电玩巴士淘宝店靠谱吗 编辑:程序博客网 时间:2024/06/06 04:23

1、Concurrent-HashMap

      使用Concurrent-HashMap用来替换同步基于散列的Map,增加了对一些常见复合操作的支持,例如若没有则添加、替换以及有条件删除等。封装了额外的原子Map操作。

2、CopyOnWriteArrayList

      CopyOnWriteArrayList用于替代同步List,在某些情况下它提供了更好的并发性能,并且在迭代期间不需要对容器进行加锁或复制。

      显然,每当修改容器时都会复制底层数组,这需要一定的开销,特别是当容器的规模较大时,仅当迭代操作远远多于修改操作时,才应该使用"写入时复制"容器。这个准则很好的描述了许多事件通知系统:在分发通知时需要迭代已注册监听器链表,并调用每一个监听器,在大多数情况下,注册和注销事件监听器的操作远小于接收事件通知的操作。

3、BlockingDeque

      它对Queue和BlockingQueue进行了扩展,是一个双端队列,实现了在队列头和队列尾的高效插入和移除。具体实现包括ArrayDeque和LinkedBlockingDeque。

      例如,在网页爬虫程序中处理一个页面时,通常会发现有更多的页面需要处理。类似的还有许多搜索图的算法,例如垃圾回收阶段对堆进行标记。

      访问自己的双端队列,从而极大的减少了竞争。当工作线程需要访问另一个队列时,它会从队列的尾部而不是头部获取工作,降低了队列上的竞争程度。


原创粉丝点击