引言
JUC即java.util.concurrent,是java提供的用于多线程处理的工具类库。
打开jdk包,JUC代码就在rt.jar包中,concurrent下有atomic和locks两个package,并且还有concurrentXXX、Executor、Future、Queue等。
AtomicXXX
atomic即原子类,如图:
其中,AtomicBoolean,AtomicInteger,AtomicLong,DoubleAccumulator,DoubleAdder,LongAccumulator,LongAdder 都是基本类型的原子类,更适合高并发场景。
以 AtomicLong 和 LongAdder 来说,AtomicLong 是通过 unsafe 类实现的,基于 CAS。unsafe 类是底层工具类,JUC 中很多类的底层都使用到了 unsafe 包中的功能。unsafe 类提供了类似 C 的指针操作,提供 CAS 等功能。并且 unsafe 类中的所有方法都是 native 修饰的。在说 AtomicXXX 之前,先补一下关于 CAS的相关知识,这里就引出了线程同步与互斥的内容。
原文地址:https://www.cnblogs.com/yadongliang/p/12325641.html
时间: 2024-10-06 20:46:38