Ответ 1
Между этими двумя объектами существуют значительные различия, хотя чистый результат один и тот же, они определенно очень разные и используются в самых разных обстоятельствах.
Вы используете базовый объект Long
, если:
- Вам нужен класс-оболочка
- Вы работаете с коллекцией
- Вы хотите иметь дело только с объектами, а не с примитивами (которые не работают)
Вы используете AtomicLong
, когда:
- Вы должны гарантировать, что значение может использоваться в параллельной среде.
- Вам не нужен класс-оболочка (поскольку этот класс не будет автобокс)
Long
сам по себе не позволяет взаимодействовать с потоком, поскольку два потока могут видеть и обновлять одно и то же значение, но с AtomicLong
, есть довольно приличные гарантии вокруг значения, которое видят несколько потоков.
Эффективно, если вы не будете работать с потоками, вам не нужно будет использовать AtomicLong
.