Atomic类是Java提供的一个线程安全的原子操作类,可以用来保证多线程的并发安全性。它提供了一系列的原子操作方法,如getAndAdd,compareAndSet等,可以保证多线程环境下操作的原子性。
使用Atomic类的步骤如下:
1.导入java.util.concurrent.atomic包
import java.util.concurrent.atomic.AtomicInteger;
2.创建Atomic类的实例
AtomicInteger count = new AtomicInteger(0);
3.调用Atomic类提供的原子操作方法更新变量的值。这里以getAndAdd方法为例,可以保证一个线程在修改变量的值时其他线程不能干扰,保证了线程的安全性。
int result = count.getAndAdd(10);
在上述代码中,getAndAdd方法会将count变量的值加10,然后返回原来的值赋值给result变量。由于这是原子操作,所以即使有多个线程同时访问count变量也不会出现结果出错的情况。
示例1:使用AtomicInteger实现线程安全的计数器
import java.util.concurrent.atomic.AtomicInteger;
public class Counter {
private AtomicInteger count = new AtomicInteger(0);
public int getCount() {
return count.get();
}
public void increment() {
count.incrementAndGet();
}
public void decrement() {
count.decrementAndGet();
}
}
上述代码中的Counter类包含了一个AtomicInteger类型的变量count,并且提供了increment和decrement方法用于自增和自减count变量,这样可以保证在多线程环境下每次操作count变量都是原子的。
示例2:使用AtomicIntegerArray实现线程安全的数组操作
import java.util.concurrent.atomic.AtomicIntegerArray;
public class AtomicArray {
private AtomicIntegerArray array = new AtomicIntegerArray(10);
public void set(int index, int value) {
array.set(index, value);
}
public int get(int index) {
return array.get(index);
}
public int incrementAndGet(int index) {
return array.incrementAndGet(index);
}
}
上述代码中的AtomicArray类包含了一个AtomicIntegerArray类型的变量array,并且提供了set、get和incrementAndGet方法用于设置、获取和自增array数组中的元素,这样可以保证在多线程环境下数组的操作都是原子的。