AtomicLong은 Long 자료형을 가지고 있는 Wrapping 클래스다.
wrapper class : 기본 자료타입(primitive type)을 객체로 다루기 위해서 사용하는 클래스.
| 기본 타입 (Primitive Type) | 래퍼 클래스 (Wrapper Class) | 설명 |
|---|---|---|
byte | Byte | 8비트 정수 |
short | Short | 16비트 정수 |
int | Integer | 32비트 정수 (가장 흔히 사용) |
long | Long | 64비트 정수 |
float | Float | 단정밀도 부동소수점 수 |
double | Double | 배정밀도 부동소수점 수 |
char | Character | 문자 하나 |
boolean | Boolean | 논리값 (true 또는 false) |
+)
기본타입 -> 객체 : 박싱 (Boxing)
객체 -> 기본타입 : 언박싱 (Unboxing)
이라고 함.
그럼 이제 AtomicLong이 Long 자료형을 가진 wrapper class라고 했는데, 이에 대해 더 알아보자.
AtomicLong은 Long 래퍼 클래스와 동일하게 long 값을 감싸는 클래스이지만, 모든 연산은 원자적(Atomic)으로 수행된다는 차이가 있다.
그래서 다음과 같은 특징이 있다
-> 멀티스레드 환경에서 쓰면 좋다 bb
그럼 주요 메서드 몇개만 보자
| 메서드 | 설명 |
|---|---|
get() | 현재 값 가져옴 |
set(new Value) | 값 설정 |
incrementAndGet() | 값을 1 증가시키고, 변경된 값을 반환 |
getAndIncrement() | 현재 값을 반환하고, 1 증가 |
addAndGet(num) | 현재 값에 num 더하고, 변경된 값을 반환 |
뭐.. 그러하다