AtomicLong 과 Wrapper class

김희영·2025년 11월 4일

spring

목록 보기
19/26

AtomicLong은 Long 자료형을 가지고 있는 Wrapping 클래스다.

wrapper class : 기본 자료타입(primitive type)을 객체로 다루기 위해서 사용하는 클래스.

기본 타입 (Primitive Type)래퍼 클래스 (Wrapper Class)설명
byteByte8비트 정수
shortShort16비트 정수
intInteger32비트 정수 (가장 흔히 사용)
longLong64비트 정수
floatFloat단정밀도 부동소수점 수
doubleDouble배정밀도 부동소수점 수
charCharacter문자 하나
booleanBoolean논리값 (true 또는 false)

Wrapper class를 쓰는 이유

  • 객체지향적 처리 : 객체가 가지는 메서드와 다형성,상속 사용하려고
  • null 값 처리 : 기본 타입은 null 값을 못가져서
  • 컬랙션 프레임워크 : 컬렉션 프레임워크(ArrayList, HashMap, List 등)는 오직 객체만 저장할 수 있도록 설계되어 있음. 쓰려면 객체로 써야 함
  • 스레드 환경에서의 동기화 : 기본 타입은 스레드 안전성 기능 없음. 객체는 동기화 메커니즘을 적용할 수 있음.

+)
기본타입 -> 객체 : 박싱 (Boxing)
객체 -> 기본타입 : 언박싱 (Unboxing)
이라고 함.

AtomicLong

그럼 이제 AtomicLong이 Long 자료형을 가진 wrapper class라고 했는데, 이에 대해 더 알아보자.

AtomicLong은 Long 래퍼 클래스와 동일하게 long 값을 감싸는 클래스이지만, 모든 연산은 원자적(Atomic)으로 수행된다는 차이가 있다.

그래서 다음과 같은 특징이 있다

  • 원자성 : 변수 읽기쓰기수정이 원자적 처리
  • 스레드 안전성 : 여러 스레드가 동시 접근해도 데이터 무결성 보장
  • 비-블로킹 동기화 : 락 대신 CAS(Compare And Swap) 알고리즘 기반으로 동시성을 해결 -> 성능 업

-> 멀티스레드 환경에서 쓰면 좋다 bb

AtomicLong 메서드

그럼 주요 메서드 몇개만 보자

메서드설명
get()현재 값 가져옴
set(new Value)값 설정
incrementAndGet()값을 1 증가시키고, 변경된 값을 반환
getAndIncrement()현재 값을 반환하고, 1 증가
addAndGet(num)현재 값에 num 더하고, 변경된 값을 반환

뭐.. 그러하다

profile
내는 반드시 개발자가 되고 말것어

0개의 댓글