1. Atomic ... 클래스
Long 과 AtomicLong은 어떤 차이가 있을까?
개요 프로젝트를 진행하면서 HashMap을 이용해 Key-Value 형태로 된 InMemory DB를 직접 구현하던 도중, 유저의 정보를 저장할 때 Long Type으로 선언된 유저의 ID값을 증가시켜줘야 하는 경우가 생겼습니
simgee.tistory.com
앞서 멀티스레드 환경에서 동시성 이슈가 발생할 수 있기 때문에 synchronized, volatile 등을 쓴다고 언급한 바 있다.
그리고 AtomicLong이 약간 갑자기 등장한 감이 있는데 이에 대해 요점만 정리해보자.
자바에서는 AtomicInteger, AtomicLong, AtomicBoolean, AtomicReference 클래스를 제공한다.
이 클래스들은 각각 원자적으로 업데이트 될 수 있는 int, long, boolean, 그리고 개체 참조를 나타낸다.
주요 메서드로 get(), set(), compareAndSet() 등이 있지만, 전 포스팅에서 언급한 것 "++" 을 대신 해주는 것도 있다. 그게 바로 incrementAndGet() 이다.
그러한 메서드가 있다는 것만 알아보고... 필요시에는 아래와 같은 문서를 읽어보고 코드에 적용해보자.
AtomicLong (Java Platform SE 8 )
getAndAccumulate public final long getAndAccumulate(long x, LongBinaryOperator accumulatorFunction) Atomically updates the current value with the results of applying the given function to the current and given values, returning the previous value. The
docs.oracle.com
'코딩 > Java' 카테고리의 다른 글
Java - Arrays.asList(), List.of() (0) | 2023.07.17 |
---|---|
객체지향 개발 5대 원리 - SOLID 원칙 (0) | 2023.07.07 |
Java - 동시성 환경에서의 블로킹 vs 논 블로킹 (2/2) (0) | 2023.06.21 |
Java - 동시성 환경에서의 블로킹 vs 논 블로킹 (1/2) (0) | 2023.06.21 |
Java - synchronized와 volatile (0) | 2023.06.20 |