在线客服
扫描二维码
下载博学谷APP
扫描二维码
关注博学谷微信公众号
对于Java程序员而言,了解并掌握多线程是极其重要的,因为多线程在工作中的使用场景实在是太常见了。而仅仅掌握了Java中的传统多线程机制还是不够的,下面给大家介绍一下Java的线程并发库,主要包括java.util.concurrent包 、java.util.concurrent.atomic包和java.util.concurrent.lock包。

(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的相关知识点,相信可以帮助大家翻越这座技术难点的大山!
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
String s = "Hello";s = s + " world!"码执行变化
String s = "Hello";s = s + " world!";这两行代码执行后原始的 String 对象中的内容变了吗? 没有。因为 String 被设计成不可变(immutable)类,所以它所有对象都是不可变对象。在这段代码中,s 原先指向一个 String 对象,内容是 "Hello",然后我们对 s 进行了+操作。
11357
2019-05-24 16:23:20
Java基础开发的集合类都有哪些?主要方法有什么?
你所知道的Java基础开发的集合类都有哪些?主要方法有什么?最常用的集合类是 List 和 Map。 List 的具体实现包括ArrayList 和 Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象的元素列表。 List 适用于按数值索引访问元素的情形。
9731
2019-06-03 11:16:40
Java软件工程师培训机构哪家好?
Java技术发展前景比较广阔可以选择的技术方向也比较多。想转行Java编程往往选择Java培训进入IT行业。Java知识学习参加培训更容易写,自学Java编程容易走弯路,为了节省宝贵的时间高效学习,选择靠谱的培训机构学习是一个不错的选择。
8116
2020-06-10 10:23:52
Java程序员面试自我介绍部分讲什么内容?技巧分享
Java程序员自我介绍要有一条清晰的线索,便于组织自我介绍。保证结构明确有条有理多用短句子便于口语表述,在段与段之间使用过渡句子,口语要注意思路、叙述语言的流畅尽量避免颠三倒四同一句话反复说几遍,同时不要用过于随便的表述。
6746
2021-06-08 15:02:47
搞Java开发,你知道哪些城市最赚钱吗?
众所周知,程序员作为薪资最高的职业之一,一直是很多人转行的热门首选。Java程序员又在所有程序员中占比最大, 因此,不少人说,Java程序员的薪资一定程度上能够反映出整体行业的薪资水准。不同城市的Java薪资待遇有所不同,今天,小谷就为大家分享一下「全国Java薪资排名前10的城市」,通过数据,了解当下Java程序员的真实情况。看看你的城市是不是榜上有名吧!
7308
2021-10-21 18:50:42
