📅  最后修改于: 2023-12-03 15:16:24.820000             🧑  作者: Mango
在多线程编程中,为了避免线程竞争导致的性能瓶颈,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。