Java Adv 12 - atomic operation - 1
in Programming Language on Java
atomic operation
원자적 연산이란 컴퓨터 과학에서 더 이상 나눌 수 없는 단위로 수행되는 연산을 의미한다. 이 연산은 중단 없이 완전히 실행되거나 전혀 실행되지 않으며, 다른 연산의 간섭 없이 독립적으로 처리된다. 즉, 멀티스레드 환경에서도 안전하게 수행되는 연산이다.
어원: 과거 원자는 더 이상 나눌 수 없는 가장 작은 단위로 여겨졌다. 여기에서 유래하여, 컴퓨터 과학에서는 나눌 수 없는 연산을 “원자적 연산”이라 한다.
java
코드 복사
volatile int i = 0;
i = 1;
위 코드에서 i = 1 연산은 원자적 연산이다. 하나의 연산으로 값을 대입하는 단일 단계로 이루어지기 때문이다. 반면, i = i + 1은 원자적 연산이 아니다. 이 연산은 다음과 같이 여러 단계로 나뉘어 실행된다
i의 값을 읽는다.- 1을 더한다.
- 결과를
i에 대입한다.
이처럼 원자적이지 않은 연산은 다른 스레드의 간섭을 받을 수 있어 멀티스레드 환경에서 문제가 발생할 수 있다. 따라서, 원자적이지 않은 연산을 안전하게 처리하기 위해서는 synchronized 블록이나 Lock을 사용하여 임계 영역을 보호해야 한다.
Reference
김영한님의 자바 강의