[꼼꼼한 개발자] 꼼코더

[JAVA] - 동기화와 원자적 연산이란?(차이점) 간단하고 쉽게 이해하기 본문

간단하고 쉽게/JAVA

[JAVA] - 동기화와 원자적 연산이란?(차이점) 간단하고 쉽게 이해하기

꼼코더 2023. 4. 4. 11:08
반응형

나는 문득 이런 생각이 들었다

"동기화는 '충돌방지' 원자적 연산도 '충돌방지' 그럼 동기화 == 원자적 연산 같은 말 아니야?"

그래서 나름 찾아보고 글을 적어본다!

♻️ 동기화

멀티스레드 환경에서 여러 스레드가 공유하는 데이터를 안전하게 접근하고 조작하기 위해 사용하는 기술.

동기화는 공유 데이터에 접근하는 스레드들이 서로 충돌하지 않도록 해주는 역할을 한다.

 

⚛️ 원자적 연산

한번에 실행되거나 실행되지 않는 연산을 의미.

원자적 연산은 연산이 실행되는 도중에 다른 스레드에 의해 방해받지 않는 것이 보장되어야 하며

실행결과도 항상 일관성이 있어야 한다.

 

👀차이점

동기화와 원자적 연산은 비슷한 개념이지만, 같은 의미는 아니다.

 

예를 들어, "i++" 연산은 하나의 단위 연산이 아니므로( 현재 i의 값을 읽어온다 > i에 1을 더한다)

여러 스레드가 "i++"를 동시에 실행하면 결과가 일관성 없이 나올 수 있다.

 

따라서, "i++"와 같은 연산이 원자적으로 실행되도록 보장하기 위해 AtomicInteger와 같은 원자적 자료형을 사용한다.

 

🎬 마무리

동기화와 원자적 연산은 서로 비슷한 개념이지만, 차이점이 존재한다

  • 동기화 : 여러 스레드 간의 공유 데이터 접근을 보호하기 위해 사용.
  • 원자적 연산 : 하나의 연산이 원자적으로 실행되도록 보장하기 위해 사용.
Comments