1. AtomicInteger i = new AtomicInteger();
含义
AtomicInteger
是 Java java.util.concurrent.atomic
包下的一个类,它提供了一种线程安全的方式来操作整数。与普通的 int
类型不同,AtomicInteger
可以在多线程环境下安全地进行自增、自减等操作,而不需要额外的同步机制(如 synchronized
关键字)。
当使用无参构造函数 new AtomicInteger()
创建对象时,其初始值默认为 0。
2. i.get() + 2;
含义
i.get()
是AtomicInteger
类的一个方法,用于获取AtomicInteger
对象当前的值。由于前面创建i
时使用的是无参构造函数,所以此时i.get()
返回的值为 0。i.get() + 2
是将i
当前的值加上 2,在初始情况下,结果为 0 + 2 = 2。不过,这行代码只是进行了加法运算,并没有将结果赋值给任何变量,也没有改变i
对象的值。因此,这行代码执行后,i
的值仍然是 0。
3. i.getAndIncrement();
含义
i.getAndIncrement()
也是 AtomicInteger
类的一个方法,它的作用是先返回 AtomicInteger
对象的当前值,然后将该对象的值加 1。这是一个原子操作,意味着在多线程环境下,这个操作不会被其他线程干扰。
具体执行过程如下:
- 首先,返回
i
的当前值(假设此时i
的值为 0)。 - 然后,将
i
的值加 1,即i
的值变为 1。
示例代码及输出验证
以下是一个完整的示例代码,展示了上述操作的执行过程:
java
import java.util.concurrent.atomic.AtomicInteger;
public class AtomicIntegerExample {
public static void main(String[] args) {
// 创建一个 AtomicInteger 对象,初始值为 0
AtomicInteger i = new AtomicInteger();
// 打印初始值
System.out.println("初始值: " + i.get());
// 执行 i.get() + 2 操作,但不改变 i 的值
int result = i.get() + 2;
System.out.println("i.get() + 2 的结果: " + result);
System.out.println("执行 i.get() + 2 后 i 的值: " + i.get());
// 执行 i.getAndIncrement() 操作
int previousValue = i.getAndIncrement();
System.out.println("i.getAndIncrement() 返回的前一个值: " + previousValue);
System.out.println("执行 i.getAndIncrement() 后 i 的值: " + i.get());
}
}
输出结果
初始值: 0
i.get() + 2 的结果: 2
执行 i.get() + 2 后 i 的值: 0
i.getAndIncrement() 返回的前一个值: 0
执行 i.getAndIncrement() 后 i 的值: 1
通过这个示例可以清晰地看到每个操作对 AtomicInteger
对象值的影响。