Атомарное присвоение длинного значения в Java
У меня есть вариант использования для обновления эпохи событий в длинной переменной. У этой переменной также будет много одновременных операций чтения и записи. Вот подробные требования:
- Очень быстрое завершение чтения и записи
- Чтение может возвращать или не возвращать последний результат, но не должно возвращать поврежденный результат
- Записи - это простое присвоение новому значению эпохи, добавление, вычитание или вычисление не требуется.
Какая из альтернатив лучше подходит для моего варианта использования:
- примитивный длинный с изменчивым ключевым словом
- AtomicLong
- Длинный Аккумулятор с гидроаккумулятором.
(x,y) -> y
- Две разные переменные - одна только для чтения значений, а другая изменчивая переменная только для записи значения, значение переменной записи копируется для чтения переменной в некотором интервале.
1 ответ
Использовать
AtomicLong
поскольку это помогает избежать дополнительных накладных расходов на явную блокировку