LongAdder原理及在多线程场景下的应用

分类:知识百科 日期: 点击:0

1. LongAdder 简介

LongAdder 是 Java 8 中新增的一种原子类型,它提供了一种比 AtomicLong 更高效的方式来维护一个可变的数字计数器。LongAdder 中的每个变量都是原子可变的,所以它可以在多线程环境中安全的使用。

LongAdder 的内部实现是一个双端链表,这个链表中的每一个节点都保存一个原子变量,这个原子变量就是 LongAdder 的值。当线程对 LongAdder 的值进行更新时,会先尝试在当前节点中更新,如果更新失败,就会在链表中新增一个节点,并在新增的节点中进行更新。

2. LongAdder 在多线程场景下的应用

LongAdder 在多线程场景下的应用主要有两个:

(1)计数器:LongAdder 可以用来记录程序中的某个事件发生的次数,比如统计程序中请求的数量、异常的数量等。

(2)锁分段:LongAdder 可以用来实现锁分段,比如在一个线程池中,可以将线程池中的线程按照线程 ID 进行分段,每一段都有一个 LongAdder,线程在获取锁时,只需要获取该段的 LongAdder 即可,而不用获取整个线程池的锁,从而提高系统的并发性能。

LongAdder 是 Java 8 中新增的一种原子类型,它提供了一种比 AtomicLong 更高效的方式来维护一个可变的数字计数器。LongAdder 在多线程环境下可以用来做计数器,也可以用来实现锁分段,从而提高系统的并发性能。

标签:

版权声明

1. 本站所有素材,仅限学习交流,仅展示部分内容,如需查看完整内容,请下载原文件。
2. 会员在本站下载的所有素材,只拥有使用权,著作权归原作者所有。
3. 所有素材,未经合法授权,请勿用于商业用途,会员不得以任何形式发布、传播、复制、转售该素材,否则一律封号处理。
4. 如果素材损害你的权益请联系客服QQ:77594475 处理。