import java.util.concurrent.atomic.AtomicInteger;

public class Main {
    private static AtomicInteger atomicInteger = new AtomicInteger(0);

    public static void main(String[] args) throws InterruptedException {

        for (int i = 0; i < 100; ++i) {
            var t1 = new Thread(() -> {
                for(;;) {
                    int saved = atomicInteger.get();

                    int newValue = ++saved;
                    if(atomicInteger.compareAndSet(saved, newValue)) {
                        return;
                    }
                }
            });

            var t2 = new Thread(() -> {
                for(;;) {
                    int saved = atomicInteger.get();

                    int newValue = ++saved;
                    if(atomicInteger.compareAndSet(saved, newValue)) {
                        return;
                    }
                }
            });

            t1.start();
            t2.start();
        }

        Thread.sleep(1000);

        System.out.println(atomicInteger.get());
    }
} 