AtomicInteger怎么用?
时间: 2023-11-23 22:57:03 浏览: 33
以下是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中的一个原子类,用于实现原子操作。常用方法包括:
1. incrementAndGet():以原子方式将当前值加1,返回更新后的值。
2. getAndIncrement():以原子方式将当前值加1,返回更新前的值。
3. decrementAndGet():以原子方式将当前值减1,返回更新后的值。
4. getAndDecrement():以原子方式将当前值减1,返回更新前的值。
5. addAndGet(int delta):以原子方式将给定值与当前值相加,返回更新后的值。
6. getAndAdd(int delta):以原子方式将给定值与当前值相加,返回更新前的值。
7. compareAndSet(int expect, int update):如果当前值等于expect,则以原子方式将该值设置为update,返回true;否则返回false。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)