Я пытаюсь использовать переменную AtomicInteger в качестве блокировки. Итак, интересно, является ли код, размещенный ниже, потокобезопасным. Я знаю, что incrementAndGet() — атомарная операция. Но я не уверен, что последующая операция '==' также будет атомарной (что, если значение увеличится до 2 к тому времени, когда я сделаю сравнение). Итак, публикуя этот вопрос, чтобы услышать ваши мысли.
private AtomicInteger count = new AtomicInteger(0); //Shared variable
private final int max = 1;
if(count.incrementAndGet() == max) {
//Do something
}
Semaphore
. - person chrylis -cautiouslyoptimistic-   schedule 21.09.2018