多个线程访问AtomicInteger
时间: 2023-12-15 07:32:48 浏览: 68
多线程访问网页
当多个线程访问同一个AtomicInteger对象时,它会确保所有的操作都是原子性的,即每个线程都能够看到其他线程的操作。这是因为AtomicInteger使用了CAS(Compare and Swap)算法来实现原子操作。在CAS算法中,当多个线程同时尝试更新同一个变量时,只有一个线程能够成功地更新变量,其他线程则需要重试。这样就能够保证所有的操作都是原子性的,从而避免了线程安全问题。
以下是一个使用AtomicInteger的例子,其中有10个线程对同一个AtomicInteger对象进行操作,每个线程对该对象进行1000次自增操作,最终输出AtomicInteger对象的值:
```java
import java.util.concurrent.atomic.AtomicInteger;
public class AtomicIntegerExample {
public static void main(String[] args) throws InterruptedException {
AtomicInteger atomicInteger = new AtomicInteger(0);
Thread[] threads = new Thread[10];
for (int i = 0; i < threads.length; i++) {
threads[i] = new Thread(() -> {
for (int j = 0; j < 1000; j++) {
atomicInteger.incrementAndGet();
}
});
threads[i].start();
}
for (Thread thread : threads) {
thread.join();
}
System.out.println("count = " + atomicInteger.get()); // 输出:count = 10000
}
}
```
阅读全文