资讯专栏INFORMATION COLUMN

Java™ 教程(高级并发对象)

xiaotianyi / 2028人阅读

高级并发对象

到目前为止,本课程重点关注从一开始就是Java平台一部分的低级别API,这些API适用于非常基础的任务,但更高级的任务需要更高级别的构建块,对于充分利用当今多处理器和多核系统的大规模并发应用程序尤其如此。

在本节中,我们将介绍Java平台5.0版中引入的一些高级并发功能,大多数这些功能都在新的java.util.concurrent包中实现,Java集合框架中还有新的并发数据结构。

Lock对象支持简化许多并发应用程序的锁定语法。

执行器定义用于启动和管理线程的高级API,java.util.concurrent提供的执行器实现提供适用于大规模应用程序的线程池管理。

并发集合使管理大量数据更容易,并且可以大大减少同步需求。

原子变量具有最小化同步并有助于避免内存一致性错误的功能。

ThreadLocalRandom(在JDK 7中)提供从多个线程有效生成伪随机数。

并发集合

java.util.concurrent包中包括对Java集合框架的大量添加,这些最容易按照提供的集合接口进行分类:

BlockingQueue定义了先进先出的数据结构,当你尝试向满的队列添加或从空队列中检索时,该数据结构会阻塞或超时。

ConcurrentMap是java.util.Map的子接口,它定义了有用的原子操作,仅当键存在时,这些操作才会移除或替换键值对,或仅在键不存在时才添加键值对,使这些操作原子化有助于避免同步,ConcurrentMap的标准泛型实现是ConcurrentHashMap,它是HashMap的并发模拟。

ConcurrentNavigableMap是ConcurrentMap的子接口,支持近似匹配,ConcurrentNavigableMap的标准泛型实现是ConcurrentSkipListMap,它是TreeMap的并发模拟。

所有这些集合通过定义将对象添加到集合的操作与访问或移除该对象的后续操作之间的先发生关系来帮助避免内存一致性错误。

并发随机数

在JDK 7中,java.util.concurrent包含一个方便的类ThreadLocalRandom,用于期望使用来自多个线程或ForkJoinTasks的随机数的应用程序。

对于并发访问,使用ThreadLocalRandom而不是Math.random()可以减少竞争,并最终提高性能。

你需要做的就是调用ThreadLocalRandom.current(),然后调用其中一个方法来检索随机数,这是一个例子:

int r = ThreadLocalRandom.current().nextInt(4, 77);
进一步阅读

Java Concurrent Animated:展示并发功能用法的动画。

上一篇:不可变对象 下一篇:Lock对象

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/73072.html

相关文章

  • 做IT这几年,我整理了这些干货想要送给你!

    摘要:资源获取方式根据下面的索引,大家可以选择自己需要的资源,然后在松哥公众号牧码小子后台回复对应的口令,就可以获取到资源的百度云盘下载地址。公众号二维码如下另外本文会定期更新,松哥有新资源的时候会及时分享给大家,欢迎各位小伙伴保持关注。 没有一条路是容易的,特别是转行计算机这条路。 松哥接触过很多转行做开发的小伙伴,我了解到很多转行人的不容易,记得松哥大二时刚刚决定转行计算机,完全不知道这...

    王晗 评论0 收藏0
  • Java教程(进程和线程)

    并发 计算机用户想当然地认为他们的系统一次可以做不止一件事,他们设想他们可以继续在文字处理器中工作,而其他应用程序则下载文件、管理打印队列和流音频,即使是单个应用程序通常也希望一次完成多个任务。例如,流式音频应用程序必须同时从网络上读取数字音频、解压缩、管理回放并更新其显示,甚至文字处理器应始终准备好响应键盘和鼠标事件,无论重新格式化文本或更新显示有多繁忙,可以执行此类操作的软件称为并发软件。 J...

    AZmake 评论0 收藏0
  • Java教程(目录)

    Java™ 教程 Java教程是为JDK 8编写的,本页面中描述的示例和实践没有利用在后续版本中引入的改进。 Java教程是希望使用Java编程语言创建应用程序的程序员的实用指南,其中包括数百个完整的工作示例和数十个课程,相关课程组被组织成教程。 覆盖基础知识的路径 这些教程以书籍的形式提供,如Java教程,第六版,前往Amazon.com购买。 入门 介绍Java技术和安装Java开发软件并使用...

    lifesimple 评论0 收藏0
  • Java核心技术教程整理,长期更新

    以下是Java技术栈微信公众号发布的关于 Java 的技术干货,从以下几个方面汇总。 Java 基础篇 Java 集合篇 Java 多线程篇 Java JVM篇 Java 进阶篇 Java 新特性篇 Java 工具篇 Java 书籍篇 Java基础篇 8张图带你轻松温习 Java 知识 Java父类强制转换子类原则 一张图搞清楚 Java 异常机制 通用唯一标识码UUID的介绍及使用 字符串...

    Anchorer 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<