Java并发框架在包java.util.package中提供了接口和类。接口中包含List、Set和Map;类包含了ArrayList、TreeSet和HashMap。

  • ArrayList、TreeSet、HashMap和其它的类都继承了这些类接口,但是它们是不安全的线程。然而,你可以让它们在使用是安全的线程,通过使用java.util.Collection类的同步擦除方法。例如,你可以通过使用Arraylist去实例化Collections.synchronizedList()去包含一个安全线程的变量ArrayList。
  • 尽管它们在多线程的环境中需要简单的代码,但它们在安全集合中也存在以下问题:
  • 在遍历集合之前,它可能需要请求一个锁,因为它在遍历期间可能被其它线程修改。如果锁不能被请求和遍历时被修改,它更有可能抛出java.util.ConcurrentModificationException。这个导致的因为是因为集合框架(Collections Framework)类会返回快速失败的迭代器。在遍历期间集合中的参数被修改,那么迭代器将会抛出ConcurrentModificationException.快速失败的迭代器对于当前应用会带来不便。
  • 在应用中可能会遭受同步集合在多线程中频繁地被调用。这种性能问题最终会影响程序的扩展性应用。
  • 并发工具通过包含同步集合来解决这些问题,这些并发应用和高可扩展和集合导向型,是储存在java.util.concurret的包。这个集合导向的类会返回弱一致性的迭代器。这个迭代器包含下面的属性:
  • 一个元素开始后,但尚未返回通过迭代器的next()方法不会返回。
  • 一个元素添加后可能会或可能不会返回。
  • 在迭代过程中,无论在迭代期间对集合进行更改,任何元素都不会多次返回。
  • 下面列表中提供了面向并发集合的简单例子,你可以在包java.util.concurrent中找到。
  • BlockingQueue是java.util.Queue的子接口,在检索元素之前没有足够的空间,那么将会处于等待的阻塞状态;或者在储存一个元素时,等待空间变得可用。每一个ArrayBlockingQueue、DelayQueue、LinkedBlockingQueue、PriorityBlockingQueue和SynchronousQueue的类应用都是直接继承的。LinkedBlockDeque和LinkedTransferQueue的类应用接口通过BlockingQueue的子接口使用。
  • ConcurrentMap是java.util.Map的子接口,在这个接口中声明putIfAbsent()、remove()和replace的方法。ConcurrentHashMap类(与同步java.util.HashMap相似)、ConcurrentSkipListMap类和ConcurrentNavigableMap类应用这个接口。

8.1并发集合(Concurrent Collections)相关推荐

  1. C#多线程开发-使用并发集合

    前言 大家好,我是阿辉. 在C#语言中当需要处理并发的场景时,就需要程序员使用最合理的数据结构.那么哪些数据结构是支持和可以在并行计算中被使用的呢. 首先这些数据结构具备可伸缩性,尽可能地避免锁(会造 ...

  2. 多线程编程学习笔记——使用并发集合(三)

    接上文 多线程编程学习笔记--使用并发集合(一) 接上文 多线程编程学习笔记--使用并发集合(二) 四.   使用ConcurrentBag创建一个可扩展的爬虫 本示例在多个独立的即可生产任务又可消费 ...

  3. Rx:4-[编外篇] .NET4里的Concurrent Collections

    Rx可以在3.5里用,他带给了3.5可以使用的支持并发的集合类型,说白了,就是提供了Thread-Safe的Collection. 在.NET 4.0之前,是不直接支持线程安全的集合的.除非自己去做l ...

  4. C#并行编程-并发集合

    菜鸟学习并行编程,参考<C#并行编程高级教程.PDF>,如有错误,欢迎指正. 目录 C#并行编程-相关概念 C#并行编程-Parallel C#并行编程-Task C#并行编程-并发集合 ...

  5. 驯服 Tiger: 并发集合

    2004 年 6 月 16 日 Doug Lea 最初编写的 util.concurrent 包变成了 JSR-166 ,然后又变成了 J2SE 平台的 Tiger 版本.这个新库提供的是并发程序中通 ...

  6. java 多线程 同步 观察者 并发集合的一个例子

    //第一版 package com.hra.riskprice;import com.hra.riskprice.SysEnum.Factor_Type; import org.springframe ...

  7. java并发集合有哪些_java中常见并发集合有哪些?详细解析

    关于java中有关集合的知识点,相信大家还是有所了解的.集合中所包含的知识点是非常丰富的,而且可以细分为很多类型.今天就来为大家介绍一下并发集合的有关知识,并且用实际代码为大家展示,一起来看看吧. 首 ...

  8. 并发集合和普通集合以及安全集合的区别

    并发集合和普通集合以及安全集合的区别 在 java 中有普通集合.同步(线程安全)的集合.并发集合.并发集合常见的有 ConcurrentHashMap.ConcurrentLinkedQueue.C ...

  9. java 什么是线程同步,java多线程同步集合是什么?并发集合是什么?

    java中关于集合的内容也是十分丰富的,而且相关的知识点也是十分多的.多线程集合所涵盖的范围是十分广阔的.今天就来为大家介绍一下,java多线程同步集合是什么以及并发集合是什么?一起来看看吧. 首先我 ...

  10. 并发编程 – Concurrent 用户指南

    转载自 并发编程 – Concurrent 用户指南 1. java.util.concurrent – Java 并发工具包 Java 5 添加了一个新的包到 Java 平台,java.util.c ...

最新文章

  1. jquery Fancybox插件的应用
  2. NMM3DViewer 设计
  3. 你不一定知道的几个前端小知识
  4. 读取带空格字符串小结
  5. date js 半年_js Date 日期使用上的一个坑
  6. python设置tk退出_退出tkinter gui
  7. shell的算术运算
  8. 26留数及其应用(二)
  9. CentOS 6.8 编译安装MySQL5.5.32
  10. 学术会议/期刊论文撤稿信的模板
  11. 5个免费商用音频素材网站
  12. url指定服务器是什么意思,URL是什么意思?网页的URL是什么意思?
  13. 如何运行计算机学报的LaTeX模板?
  14. 什么是服务器?服务器是干什么用的?服务器的基本属性有哪些?怎么配置服务器?怎么挑选适合自己的服务器?
  15. vue2中watch的使用
  16. python爬虫小实例
  17. 一文搞懂浏览器缓存机制
  18. 使用 tcpcopy 线上导流及回放
  19. linux gpt转mbr命令,Diskpart命令将gpt格式转换成mbr教程
  20. 为什么OFDM抗多径?

热门文章

  1. MyBatis结果集处理,中resultType和resultMap的区别
  2. TCP服务端开发为例--web开发不同url请求为何会走不同方法
  3. Redis set集合结构及命令详解
  4. 防止mdf文件被非法附加后修改的一个简单实现方案
  5. iOS学习之--字符串的删除替换(字符串的常用处理,删除,替换)
  6. 江苏新一代物联网全省商用 全省信号覆盖率达97.5%
  7. 如何在非 React 项目中使用 Redux
  8. 【DATAGUARD】物理dg在主库丢失归档文件的情况下的恢复(七)
  9. Espresso unit test的输入法问题
  10. JVM内存管理 (转)