如何编写一个计算被调用次数的消费者?

gvl*_*sov 6 java concurrency java-8

我需要(主要是出于测试目的)编写一个消费者,其目的是记住它被调用了多少次.但是,我不能这样做

    int i = 0;
    Consumer<Object> handler = o -> i++;
Run Code Online (Sandbox Code Playgroud)

因为i必须是最终的,我不能增加最终变量.我想我需要像MutableInteger课一样的东西.那么正确的计算方法是什么?编写我自己的新类或新方法只是为了正确的方法.

Ada*_*old 12

使用AtomicInteger使用CAS实现的.

AtomicInteger有一种incrementAndGet()方法可以用于此目的.

这也是有用的知道,有更多Atomic*的变种JDK,所以也有AtomicLong,如果Integer是不够的,你.