AtomicInteger 类常用方法介绍

简介: AtomicInteger 类常用方法介绍

8f942697d3a98058ef69bb91f86e007b_3326e55dc3b14c11abb5c64b59db3703.png

AtomicInteger 概述


AtomicInteger 类是 Java 并发包(java.util.concurrent.atomic)中的一员。它提供了一种线程安全的方式来对整型变量进行原子操作。通过使用 AtomicInteger 类,开发者可以在多线程环境中对整型变量进行安全地增加、减少等操作,而不需要使用显式的同步机制。


常用方法

下面是 AtomicInteger 类中一些常用的方法:


  1. get():获取当前的整型值。
  2. set(int newValue):设置为指定的新值。
  3. getAndSet(int newValue):设置为指定的新值,并返回旧值。
  4. incrementAndGet():原子地将当前值加1,然后返回增加后的值。
  5. decrementAndGet():原子地将当前值减1,然后返回减少后的值。
  6. getAndIncrement():返回当前值,然后将当前值加1。
  7. getAndDecrement():返回当前值,然后将当前值减1。
  8. addAndGet(int delta):原子地将给定值与当前值相加,然后返回相加后的值。
  9. getAndAdd(int delta):返回当前值,然后将给定值与当前值相加。
  10. compareAndSet(int expect, int update):如果当前值等于预期值,则原子地将该值设置为给定的更新值。


示例代码

下面是一个示例代码,演示了 AtomicInteger 类中一些常用的方法的合集:

import java.util.concurrent.atomic.AtomicInteger;
 
public class AtomicIntegerMethodsExample {
    public static void main(String[] args) {
        // 创建一个初始值为0的AtomicInteger对象
        AtomicInteger atomicInt = new AtomicInteger(0);
 
        // 1. get() 方法:获取当前的整型值
        int currentValue = atomicInt.get();
        System.out.println("Current value: " + currentValue);
 
        // 2. set(int newValue) 方法:设置为指定的新值
        atomicInt.set(10);
        System.out.println("New value after set: " + atomicInt.get());
 
        // 3. getAndSet(int newValue) 方法:设置为指定的新值,并返回旧值
        int oldAndNewValue = atomicInt.getAndSet(20);
        System.out.println("Old value: " + oldAndNewValue);
        System.out.println("Value after getAndSet: " + atomicInt.get());
 
        // 4. incrementAndGet() 方法:原子地将当前值加1,并返回增加后的值
        int incrementedValue = atomicInt.incrementAndGet();
        System.out.println("Incremented value: " + incrementedValue);
 
        // 5. decrementAndGet() 方法:原子地将当前值减1,并返回减少后的值
        int decrementedValue = atomicInt.decrementAndGet();
        System.out.println("Decremented value: " + decrementedValue);
 
        // 6. addAndGet(int delta) 方法:原子地将给定值与当前值相加,并返回相加后的值
        int addResult = atomicInt.addAndGet(5);
        System.out.println("Value after addAndGet: " + addResult);
 
        // 7. getAndAdd(int delta) 方法:返回当前值,然后将给定值与当前值相加
        int oldValue = atomicInt.getAndAdd(8);
        System.out.println("Old value before getAndAdd: " + oldValue);
        System.out.println("Value after getAndAdd: " + atomicInt.get());
 
        // 8. compareAndSet(int expect, int update) 方法:如果当前值等于预期值,则原子地将该值设置为给定的更新值
        boolean isSuccess = atomicInt.compareAndSet(33, 100); // 如果当前值是33,则设置为100
        System.out.println("compareAndSet result: " + isSuccess);
        System.out.println("Value after compareAndSet: " + atomicInt.get());
    }
}


结论


AtomicInteger 类提供了一种简单且高效的方式来实现对整型变量的原子操作。通过使用 AtomicInteger 类,开发者可以避免使用显式的同步机制(如 synchronized 关键字),从而提高程序的并发性能。在多线程环境中,特别是需要频繁对整型变量进行操作的情况下,建议使用 AtomicInteger 类来确保操作的线程安全性。

相关文章
|
22天前
|
Java
Throwable 类常用方法有哪些?
【10月更文挑战第13天】Throwable 类的方法在不同的异常类型中可能会有一些特殊的实现和用法。比如,一些自定义异常类可能会重写某些方法来提供更符合自身需求的功能。
|
2月前
|
安全 Java 编译器
StringBuilder类和StringJoiner类
StringBuilder类和StringJoiner类
17 2
【多线程面试题 二】、 说说Thread类的常用方法
Thread类的常用方法包括构造方法(如Thread()、Thread(Runnable target)等)、静态方法(如currentThread()、sleep(long millis)、yield()等)和实例方法(如getId()、getName()、interrupt()、join()等),用于线程的创建、控制和管理。
|
12月前
|
Java
【equals比较方法 和 内部类】
【equals比较方法 和 内部类】
58 0
|
Java 调度
Thread常用方法
Thread常用方法
59 0
|
安全 Java API
【JavaEE】Thread 类及常用方法
哈喽,大家好~我是保护小周ღ,本期为大家带来的是 Java 多线程的 Thread 类,讲述了 Thread 类的常用方法及常用属性,例如:线程的 name, 如何启动线程,终止线程,等待线程…… 更多精彩敬请期待:保护小周ღ *★,°*:.☆( ̄▽ ̄)/$:*.°★* ‘
|
索引
列出了 StringBuffer 类的其他常用方法
列出了 StringBuffer 类的其他常用方法
102 0
|
调度
Thread类的有关常用方法
Thread类的有关常用方法
74 0
|
Java
JAVA同步锁 synchronized(this)、synchronized(class)与synchronized(Object)的区别
利用实例介绍JAVA同步锁 synchronized(this)、synchronized(class)与synchronized(Object)的区别
140 0
JAVA同步锁 synchronized(this)、synchronized(class)与synchronized(Object)的区别