AtomicReference<IInteger>
时间: 2023-11-22 10:42:50 浏览: 35
AtomicReference是Java中的一个类,它提供了一种无锁方式来访问共享资源的能力。通过使用AtomicReference,可以实现线程安全的操作。以下是一个使用AtomicReference的例子:
```java
public class AtomicRefTest {
public static void main(String[] args) throws InterruptedException {
AtomicReference<Integer> ref = new AtomicReference<>(new Integer(1000));
List<Thread> list = new ArrayList<>();
for (int i = 0; i < 1000; i++) {
Thread t = new Thread(new Task(ref), "Thread-" + i);
list.add(t);
t.start();
}
for (Thread t : list) {
try {
t.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println(ref.get()); // 打印2000
}
}
class Task implements Runnable {
private AtomicReference<Integer> ref;
Task(AtomicReference<Integer> ref) {
this.ref = ref;
}
@Override
public void run() {
for (;;) { // 自旋操作
Integer oldV = ref.get();
if (ref.compareAndSet(oldV, oldV + 1)) // CAS操作
break;
}
}
}
```
上述例子中,我们创建了一个AtomicReference对象,并初始化为1000。然后创建了1000个线程,每个线程都会对AtomicReference中的值进行自增操作。最后,打印AtomicReference中的值,预期结果是2000。
在这个例子中,AtomicReference保证了对共享资源(Integer对象)的无锁访问,并且保证了线程安全。