Oracle官方并发教程之并发集合

原文地址 译文地址  译者:李任  校对:方腾飞

java.util.concurrent包囊括了Java集合框架的一些附加类。它们也最容易按照集合类所提供的接口来进行分类:

  • BlockingQueue定义了一个先进先出的数据结构,当你尝试往满队列中添加元素,或者从空队列中获取元素时,将会阻塞或者超时。
  • ConcurrentMapjava.util.Map的子接口,定义了一些有用的原子操作。移除或者替换键值对的操作只有当key存在时才能进行,而新增操作只有当key不存在时。使这些操作原子化,可以避免同步。ConcurrentMap的标准实现是ConcurrentHashMap,它是HashMap的并发模式。
  • ConcurrentNavigableMap是ConcurrentMap的子接口,支持近似匹配。ConcurrentNavigableMap的标准实现是ConcurrentSkipListMap,它是TreeMap的并发模式。

所有这些集合,通过 在集合里新增对象和访问或移除对象的操作之间,定义一个happens-before的关系,来帮助程序员避免内存一致性错误

文章转自 并发编程网-ifeve.com

时间: 2024-09-20 06:37:44

Oracle官方并发教程之并发集合的相关文章

Oracle官方并发教程之并发随机数

原文地址 译文地址 译者:李任 校对:方腾飞 在JDK7中,java.util.concurrent包含了一个相当便利的类,ThreadLocalRandom,当应用程序期望在多个线程或ForkJoinTasks中使用随机数时. 对于并发访问,使用TheadLocalRandom代替Math.random()可以减少竞争,从而获得更好的性能. 你只需调用ThreadLocalRandom.current(), 然后调用它的其中一个方法去获取一个随机数即可.下面是一个例子: int r = Thr

Oracle官方并发教程

计算机的使用者一直以为他们的计算机可以同时做很多事情.他们认为当其他的应用程序在下载文件,管理打印队列或者缓冲音频的时候他们可以继续在文字处理程序上工作.甚至对于单个应用程序,他们任然期待它能在在同一时间做很多事情.举个例子,一个流媒体播放程序必须能同时完成以下工作:从网络上读取数字音频,解压缩数字音频,管理播放和更新程序显示.甚至文字处理器也应该能在忙于重新格式化文本和刷新显示的情况下同时响应键盘和鼠标事件.这样的软件就被称为并发软件. 通过Java语言和Java类库对于基础并发的支持,JAV

Oracle官方并发教程之高级并发对象

原文地址,译文地址 译者:李任 目前为止,该教程重点讲述了最初作为Java平台一部分的低级别API.这些API对于非常基本的任务来说已经足够,但是对于更高级的任务就需要更高级的API.特别是针对充分利用了当今多处理器和多核系统的大规模并发应用程序. 本节,我们将着眼于Java 5.0新增的一些高级并发特征.大多数特征已经在新的java.util.concurrent包中实现.Java集合框架中也定义了新的并发数据结构. 锁对象提供了可以简化许多并发应用的锁的惯用法. Executors为加载和管

oracle锁机制的延续——并发与多版本1

开发多用户数据库应用,最大的难题之一是:一方面要力争最大的并发访问,而同时还要确保每一用户 能以一致的方式读取和修改数据.力争最大的并发访问需要用锁定机制,而确保一致读和修改数据则需要一些并发控制机制.    1.并发控制:     并发控制(concurrency control)是数据库提供的函数集合,允许多个人同时访问和修改数据.锁(lock)是Oracle管理共享数据库资源并发访问并防止并发数据库事务之间"相互干涉"的核心机制之一.总结一下,Oracle使用了多种锁,包括:  

Java8并发教程:Threads和Executors

欢迎阅读我的Java8并发教程的第一部分.这份指南将会以简单易懂的代码示例来教给你如何在Java8中进行并发编程.这是一系列教程中的第一部分.在接下来的15分钟,你将会学会如何通过线程,任务(tasks)和 exector services来并行执行代码. 第一部分:Threads和Executors 第二部分:同步和锁 并发在Java5中首次被引入并在后续的版本中不断得到增强.在这篇文章中介绍的大部分概念同样适用于以前的Java版本.不过我的代码示例聚焦于Java8,大量使用lambda表达式

kotlin 官方学习教程之基础语法详解

kotlin 官方学习教程之基础语法详解 Google 在今天的举行了 I/O 大会,大会主要主要展示内有容 Android O(Android 8.0)系统.Google Assistant 语音助手.Google 智能音箱.人工智能.机器学习.虚拟现实等.作为一个 Android 开发者,我关心的当然是 Android O(Android 8.0)系统了,那么关于 Android O 系统的一个重要消息是全面支持 Kotlin 编程语言,使得 Kotlin 成为了 Android 开发的官方

通过ASP.NET连接Oracle数据库实例教程

通过ASP.NET连接Oracle数据库实例教程 长期以来,我一直用的是 MS SQL Server / Access 数据库,通过.NET 访问MS自家的东西几乎没碰到过什么麻烦.最近项目中要用 Oracle 作为数据库,学习研究了一些 .NET 访问Oracle 的东西,发现问题倒真的不少. 1.System.Data.OracleClient 和 System.Data.OleDb 命名空间 虽然通过这两个命名空间的类都可以访问 Oracle 数据库,但和 SQL Server 类似的(S

《流程的永恒之道》(一)控制模式之串行、并发分裂及并发汇聚模式

控制模式是流程的中枢神经,它在作战小分队中负责将多个单独的作战活动组合在一起,并推动活动的自动化流转,形成作战流程.其重要性不言而喻,因此要设计一个好的流程,就必须学会应用各种各样的控制模式. 在探寻每个模式的究竟之前,我们首先定义一个统一的格式,对于控制模式,将按照如下统一的格式进行描述: 模式描述 我们在探寻每个控制模式时,将按照如下统一的格式进行描述. 原型实例(故事片段) 给出此模式的故事片段,通过鲜活的工作流故事展现此模式的应用场景. 上下文(描述.动机) 给出此模式的具体描述和动机:

微软官方入门教程19:轻松掌握Vista系统的快捷键

这是微软官方入门教程的最后一篇, 希望对大家能有所帮助.一口气搞定了19篇,算是一份圣诞节的礼物吧.当然,最应该感谢的是微软中国Vista团队的同仁们. Alt+Enter 查看当前选中目标的属性 Alt+ESC 切换到上一个操作的窗口 Alt+F4 关闭当前窗口 Print Screen 截取当前全屏幕到剪切板 Alt+Print Screen 截取当前窗口屏幕截图到剪切板 Alt+Shift 在输入法之间切换 Alt+Tab 切换当前打开的窗口 Alt+Shift+Tab 反向切换当前打开的