Java --- 原子操作类 AtomicInteger 使用

小编在开发中遇到,对 list 使用 lambda 方式遍历操作,计算 count 值时,idea 错误警告的场景。原来 Lambda 不支持常规的计数方式,这里可以使用 Java 的原子操作类 — AtomicInteger 。下面,小编展示一下 idea 错误警告的场景以及 AtomicInteger 使用场景:

1,错误警告场景:

/**
 * @author: 
 * @description:
 * @date: 2022/3/31
 **/
public class AtomicIntTest {

    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d");
        int count = 0;
        list.forEach(item -> {
            count++;
        });
        /**
         * 错误警告!!!!!:
         * Variable used in lambda expression should be final or effectively final
         */
    }
}

2,改进,使用 AtomicInteger。

/**
 * @author: 
 * @description:
 * @date: 2022/3/31
 **/
public class AtomicIntTest {

    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d");
        AtomicInteger count = new AtomicInteger(0);
        list.forEach(item -> {
            int i = count.incrementAndGet(); // 自增1,并返回自增后的值
            System.out.println("===count: " + i);
        });
    }
}

输出:

"C:\Program Files (x86)\Java\jdk1.8.0_31\bin\java.exe"
===count: 1
===count: 2
===count: 3
===count: 4

Process finished with exit code 0

版权声明:本文为yuanchenglong原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。