📜  Java中的 LongAdder intValue() 方法及示例(1)

📅  最后修改于: 2023-12-03 15:31:53.822000             🧑  作者: Mango

Java中的 LongAdder intValue() 方法及示例

简介

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 时,需要注意线程的安全性。