首页 课程 师资 教程 报名

java技术教程之线程并发库介绍

  • 2020-06-09 16:18:50
  • 2027次 动力节点

对于Java程序员而言,了解并掌握多线程是极其重要的,因为多线程在工作中的使用场景实在是太常见了。而仅仅掌握了Java中的传统多线程机制还是不够的,下面给大家介绍一下Java线程并发库,主要包括java.util.concurrent包、java.util.concurrent.atomic包和java.util.concurrent.lock包。

java技术教程之线程并发库介绍

1.java.util.concurrent包

java.util.concurrent包含许多线程安全、测试良好、高性能的并发构建块。不客气地说,创建java.util.concurrent的目的就是要实现Collection框架对数据结构所执行的并发操作。通过提供一组可靠的、高性能并发构建块,开发人员可以提高并发类的线程安全、可伸缩性、性能、可读性和可靠性,后面、我们会做介绍。如果一些类名看起来相似,可能是因为java.util.concurrent中的许多概念源自Doug Lea的util.concurrent库。

2.java.util.concurrent.atomic包

查看atomic包文档页下面的介绍,它可以对多线程的基本数据、数组中的基本数据和对象中的基本数据进行多线程的操作(AtomicInteger、AtomicIntegerArray、AtomicIntegerFieldUpDater…)

通过如下两个方法快速理解atomic包的意义:

AtomicInteger类的boolean compareAndSet(expectedValue,updateValue);
AtomicIntegerArray类的int addAndGet(int i,int delta);

顺带解释volatile类型的作用,需要查看java语言规范。volatile修饰的变量,线程在每次使用变量的时候,都会读取变量修改后的最的值。(具有可见性)volatile没有原子性。

3.java.util.concurrent.lock包

为锁和等待条件提供一个框架的接口和类,它不同于内置同步和监视器。该框架允许更灵活地使用锁和条件。本包下有三大接口,下面简单介绍下:

Lock接口:支持那些语义不同(重入、公平等)的锁规则,可以在非阻塞式结构的上下文(包括hand-over-hand和锁重排算法)中使用这些规则。主要的实现是ReentrantLock。

ReadWriteLock接口:以类似方式定义了一些读取者可以共享而写入者独占的锁。此包只提供了一个实现,即ReentrantReadWriteLock,因为它适用于大部分的标准用法上下文。但程序员可以创建自己的、适用于非标准要求的实现。

Condition接口:描述了可能会与锁有关联的条件变量。这些变量在用法上与使用Object.wait访问的隐式监视器类似,但提供了更强大的功能。需要特别指出的是,单个Lock可能与多个Condition对象关联。为了避免兼容性问题,Condition方法的名称与对应的Object版本中的不同。

java技术教程之线程并发库介绍

以上就是动力节点java培训机构的小编针对“java技术教程之线程并发库介绍”的内容进行的回答,希望对大家有所帮助,如有疑问,请在线咨询,有专业老师随时为你服务。

选你想看

你适合学Java吗?4大专业测评方法

代码逻辑 吸收能力 技术学习能力 综合素质

先测评确定适合在学习

在线申请免费测试名额
价值1998元实验班免费学
姓名
手机
提交