当前位置:  首页>> 技术小册>> Java面试指南

Java中的AtomicInteger介绍

在Java中,AtomicInteger是一种线程安全的整数类型,它可以用来替代普通的整型变量,并且支持原子操作,即多个线程同时对它进行修改时也能保证结果正确。

AtomicInteger提供了一些原子操作方法,如getAndIncrement()、incrementAndGet()、getAndSet()等等,这些方法在多线程环境下都能够保证操作的原子性,从而避免了一些并发问题,例如死锁和数据丢失等。

下面是一个使用AtomicInteger的示例:

  1. import java.util.concurrent.atomic.AtomicInteger;
  2. public class Counter {
  3. private AtomicInteger count = new AtomicInteger(0);
  4. public void increment() {
  5. count.getAndIncrement();
  6. }
  7. public int getCount() {
  8. return count.get();
  9. }
  10. }
  11. public class Main {
  12. public static void main(String[] args) {
  13. Counter counter = new Counter();
  14. Thread t1 = new Thread(() -> {
  15. for (int i = 0; i < 10000; i++) {
  16. counter.increment();
  17. }
  18. });
  19. Thread t2 = new Thread(() -> {
  20. for (int i = 0; i < 10000; i++) {
  21. counter.increment();
  22. }
  23. });
  24. t1.start();
  25. t2.start();
  26. try {
  27. t1.join();
  28. t2.join();
  29. } catch (InterruptedException e) {
  30. e.printStackTrace();
  31. }
  32. System.out.println(counter.getCount());
  33. }
  34. }

在上面的代码中,我们创建了一个Counter类,其中使用了AtomicInteger类型的count变量来保证操作的原子性。我们创建了两个线程来分别对count变量进行10000次自增操作,并在主线程中等待两个线程执行完毕后输出count变量的值。

由于使用了AtomicInteger,我们可以确保每个线程都能够正确地自增count变量,并且最终输出的结果也是正确的。需要注意的是,AtomicInteger仅仅能保证单个变量的原子性,如果需要保证多个变量的原子性,需要使用其他的原子类型,例如AtomicLong、AtomicBoolean等等。


该分类下的相关小册推荐: