package com.ak.util; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.atomic.LongAccumulator; import java.util.function.UnaryOperator; import java.util.stream.Stream; import org.testng.Assert; import org.testng.annotations.Test; public class LongAccumulatorTest { @Test public void test() { int n = 50; LongAccumulator balance = new LongAccumulator(Long::sum, 0L); ExecutorService executorService = Executors.newFixedThreadPool(n); Stream.iterate((Runnable) () -> balance.accumulate(1000L), UnaryOperator.identity()).limit(n).forEach(executorService::submit); executorService.shutdown(); Assert.assertEquals(balance.get(), n * 1000L); } }