TestAtomic.java 805 B

1234567891011121314151617181920212223242526272829303132
  1. import java.util.concurrent.*;
  2. import java.util.concurrent.atomic.*;
  3. public class TestAtomic {
  4. public static void main(String[] args) throws Exception {
  5. int threads = 1000;
  6. ExecutorService executor = Executors.newCachedThreadPool();
  7. CountDownLatch cd = new CountDownLatch(threads);
  8. Counter counter = new Counter();
  9. for (int i = 0; i < threads; i++) {
  10. executor.execute(() -> {
  11. counter.add();
  12. cd.countDown();
  13. });
  14. }
  15. cd.await();
  16. executor.shutdown();
  17. System.out.println(counter.get());
  18. }
  19. }
  20. class Counter {
  21. private AtomicInteger count = new AtomicInteger(0);
  22. void add() {
  23. count.incrementAndGet();
  24. }
  25. int get() {
  26. return count.get();
  27. }
  28. }