JUC 工具类

 

https://kaiwu.lagou.com/course/courseInfo.htm?courseId=1#/detail/pc?id=6

 

JUC 是 Java 提供的用于多线程处理的工具类库,来看其中的常用工具类的作用,如下图所示。

 

 

 

如上图所示,第一行的类都是基本数据类型的原子类,包括 AtomicBoolean、AtomicLong、AtomicInteger 类。

AtomicLong 通过 unsafe 类实现,基于CAS。unsafe 类是底层工具类,JUC 中很多类的底层都使用到了 unsafe 包中的功能。unsafe 类提供了类似 C 的指针操作,提供 CAS 等功能。unsafe 类中的所有方法都是 native 修饰的。

LongAdder等 4 个类是 JDK1.8 中提供的更高效的操作类。LongAdder 基于 Cell 实现,使用分段锁思想,是一种空间换时间的策略,更适合高并发场景;LongAccumulator 提供了比 LongAdder 更强大的功能,能够指定对数据的操作规则,例如可以把对数据的相加操作改成相乘操作。

 

第二行中的类提供了对对象的原子读写功能,后两个类 AtomicStampedReference 和 AtomicMarkableReference 用于解决前面提到的 ABA 问题,分别基于时间戳和标记位来解决问题。

posted @ 2022-02-24 10:00  Nausicaa0505  阅读(119)  评论(0编辑  收藏  举报