AtomicInteger怎么用?
时间: 2023-11-23 14:57:03 浏览: 81
以下是AtomicInteger的使用方法和示例:
1.创建AtomicInteger对象并设置初始值为10:
```java
AtomicInteger atomicInteger = new AtomicInteger(10);
```
2.使用compareAndSet()方法进行原子操作:
```java
System.out.println(atomicInteger.compareAndSet(10, 20)); // 输出:true
System.out.println(atomicInteger.compareAndSet(10, 20)); // 输出:false
```
3.使用incrementAndGet()方法进行原子自增操作:
```java
System.out.println(atomicInteger.incrementAndGet()); // 输出:21
```
4.使用decrementAndGet()方法进行原子自减操作:
```java
System.out.println(atomicInteger.decrementAndGet()); // 输出:20
```
相关问题
AtomicInteger 使用
AtomicInteger是Java中一个原子操作类,用于原子性地更新整型变量。它提供了一些原子性的方法,例如incrementAndGet()、decrementAndGet()、getAndIncrement()、getAndDecrement()等,这些方法可以保证在多线程环境下对整型变量的操作是原子性的,不会出现线程安全问题。
示例代码如下:
```
import java.util.concurrent.atomic.AtomicInteger;
public class AtomicIntegerTest {
private static AtomicInteger count = new AtomicInteger(0);
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
new Thread(() -> {
for (int j = 0; j < 1000; j++) {
count.incrementAndGet();
}
}).start();
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("count = " + count.get());
}
}
```
在上面的示例代码中,我们创建了一个AtomicInteger类型的count变量,并将其初始化为0。然后启动了10个线程,每个线程对count变量执行了1000次incrementAndGet()方法,最后输出count的值,可以看到输出结果为10000,说明AtomicInteger确实保证了多线程环境下对整型变量的原子性操作。
AtomicInteger
AtomicInteger是Java中的一个原子类,用于实现原子操作的整数类型。它提供了一种线程安全地对整数进行操作的方式,确保了并发环境下的数据一致性。
AtomicInteger类可以用于代替使用synchronized关键字或Lock机制来实现线程安全的整数操作。它提供了一些原子方法,如get()获取当前值、set()设置新值、getAndSet()先获取当前值再设置新值等。此外,还提供了自增(incrementAndGet())、自减(decrementAndGet())等方法,以及compareAndSet()方法用于比较并设置新值。
需要注意的是,虽然AtomicInteger提供了原子性的操作,但并不意味着它解决了所有的并发问题。在使用AtomicInteger时仍需考虑其他线程安全性问题,如原子操作的顺序性、可见性等。
阅读全文