///////
Search
💫

Atomic Type과 CAS는 무엇이고 언제 사용되는 것인가요?

Atomic Type

Wrapper 클래스의 일종
멀티 스레드 환경에서 원자성을 보장하고 동기화 문제를 해결
Synchronized의 단점을 보안
synchronized는 blocking을 사용하여 블락 전체를 lock한다
따라서 다른 쓰레드는 아무런 작업을 하지 못하고 기다리게 되어 낭비가 심하고, blocking 상태의 스레드를 준비/실행 상태로 변경하기 위해 시스템의 자원을 사용해야 해서 성능이 저하된다
Atomic은 CAS 알고리즘 Compare and Swap)을 사용한다

Compare And Swap

멀티스레드 환경에서는 CPU가 메모리에서 변수값을 참조하는게 아니라 CPU의 캐시 영역에서 값을 참조한다
이 때, 메모리에 저장된 값과 CPU캐시에 저장된 값이 서로 다를 수 있다 (가시성 문제)
CAS 알고리즘은 현재 스레드에 저장된 값과 메모리에 저장된 값을 비교한 후 일치하면 새로운 값으로 교체하고, 일치하지 않는다면 실패하고 재시도하는 방식으로 가시성 문제를 해결한다