📅  最后修改于: 2023-12-03 15:31:53.822000             🧑  作者: Mango
LongAdder
是 Java 8 中新增的一个类,它是一个可伸缩的、高并发的计数器(counter)类,无论在什么情况下都要优于原先的 AtomicLong
。提供了比 AtomicLong
更高的吞吐量,在高并发环境下表现得更加优秀。LongAdder
中的 intValue()
方法可以将当前实例的值以 int 的形式返回。
public int intValue()
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.LongAdder;
public class LongAdderExample {
public static void main(String[] args) throws InterruptedException {
LongAdder adder = new LongAdder();
ExecutorService executor = Executors.newFixedThreadPool(2);
Runnable task = () -> {
for (int i = 0; i < 1000; i++) {
adder.increment();
}
};
executor.submit(task);
executor.submit(task);
executor.shutdown();
executor.awaitTermination(1, TimeUnit.MINUTES);
System.out.println(adder.intValue());
}
}
在示例代码中,创建了两个任务,每个任务会将 LongAdder
对象的值加 1000,然后等待线程池执行所有的任务,最后通过 intValue()
方法将 LongAdder
对象的值以 int 的形式输出。
LongAdder
是 Java 中一个高效的计数器,它比原先的 AtomicLong
更加高效,在高并发环境下表现得更加优秀。intValue()
方法可以获取 LongAdder
中的值以 int 的形式返回。在使用 LongAdder
时,需要注意线程的安全性。