Atomic Type
•
Wrapper 클래스의 일종
•
멀티 스레드 환경에서 원자성을 보장하고 동기화 문제를 해결
•
Synchronized의 단점을 보안
◦
synchronized는 blocking을 사용하여 블락 전체를 lock한다
◦
따라서 다른 쓰레드는 아무런 작업을 하지 못하고 기다리게 되어 낭비가 심하고, blocking 상태의 스레드를 준비/실행 상태로 변경하기 위해 시스템의 자원을 사용해야 해서 성능이 저하된다
•
Atomic은 CAS 알고리즘 Compare and Swap)을 사용한다
Compare And Swap
•
멀티스레드 환경에서는 CPU가 메모리에서 변수값을 참조하는게 아니라 CPU의 캐시 영역에서 값을 참조한다
•
이 때, 메모리에 저장된 값과 CPU캐시에 저장된 값이 서로 다를 수 있다 (가시성 문제)
•
CAS 알고리즘은 현재 스레드에 저장된 값과 메모리에 저장된 값을 비교한 후 일치하면 새로운 값으로 교체하고, 일치하지 않는다면 실패하고 재시도하는 방식으로 가시성 문제를 해결한다