Using volatile vs AtomicInteger in Java concurrency