РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1041 of 1163 menu

Метод set

Метод set класса AtomicInteger атомарно устанавливает новое значение переменной. В первый параметр мы передаем новое целочисленное значение, которое должно быть записано. Метод работает как операция записи с семантикой volatile: изменение сразу становится видимым другим потокам. При этом метод не возвращает результата и не выполняет проверок текущего значения.

Синтаксис

atomicInteger.set(newValue)

Пример

Давайте создадим счетчик и установим ему новое значение 10:

import java.util.concurrent.atomic.AtomicInteger; public class Main { public static void main(String[] args) { AtomicInteger counter = new AtomicInteger(5); counter.set(10); System.out.println(counter.get()); } }

Результат выполнения кода:

10

Пример

Давайте покажем, что set заменяет значение целиком, а не прибавляет его к текущему:

import java.util.concurrent.atomic.AtomicInteger; public class Main { public static void main(String[] args) { AtomicInteger counter = new AtomicInteger(100); counter.set(3); System.out.println(counter.get()); } }

Результат выполнения кода:

3

Пример

Давайте установим значение из одного потока и прочитаем его в другом:

import java.util.concurrent.atomic.AtomicInteger; public class Main { public static void main(String[] args) throws InterruptedException { AtomicInteger counter = new AtomicInteger(0); Thread writer = new Thread(() -> { counter.set(42); }); Thread reader = new Thread(() -> { System.out.println(counter.get()); }); writer.start(); writer.join(); reader.start(); reader.join(); } }

Результат выполнения кода:

42

Смотрите также

  • метод get,
    который возвращает текущее значение
  • метод incrementAndGet,
    который увеличивает значение на единицу
  • метод compareAndSet,
    который меняет значение при совпадении
  • класс AtomicInteger,
    который представляет атомарный счетчик
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить