Доброго времени суток! Возник вопрос, а зачем в правильном решении переменная типа AtomicInteger объявлена с модификатором volatile? Разве сам AtomicInteger + синхронизированный метод не предоставляют нам нужные гарантии? Не избыточно ли тут использование volatile?