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

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

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

在多线程编程中,为了避免线程竞争导致的性能瓶颈,Java提供了一些线程安全的计数器类,例如AtomicInteger和LongAdder。其中,LongAdder比AtomicInteger更适合高并发的场景,因为它内部使用了一种分段锁的技术,可以有效减少竞争。

LongAdder提供了longValue()方法,用于获取当前的计数器值。本文将介绍LongAdder的longValue()方法的使用。

语法
public long longValue()
返回值

返回当前LongAdder对象的计数器值。

示例

以下代码演示了如何使用LongAdder的longValue()方法。

import java.util.concurrent.atomic.LongAdder;

public class LongAdderTest {
    public static void main(String[] args) {
        LongAdder counter = new LongAdder();

        for (int i = 0; i < 100; i++) {
            new Thread(() -> {
                counter.increment();
            }).start();
        }

        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        System.out.println(counter.longValue()); // 输出100
    }
}

在上述示例中,我们创建了一个LongAdder对象,并使用100个线程对其进行自增。最后使用longValue()方法获取计数器值,并输出结果。由于LongAdder是线程安全的,所以不会出现竞争问题,因此计数器值应该等于100。

除了使用longValue()方法外,LongAdder还提供了一些其他方法,例如increment()、decrement()、sum()等,可以实现计数器的自增、自减、求和等操作。如果需要在高并发场景下使用计数器,建议使用LongAdder而不是AtomicInteger。