Skip to Content
Suffering builds character
아카이브13.프로세스,스레드특징스레드 특징7. 스레드 안전성 문제

7. 스레드 안전성 문제

1. 스레드 안전성(Thread Safety)

스레드 안전성이란 특정 클래스에 대해 여러 스레드들이 접근하여 해당 클래스를 사용하더라도 프로그램이 항상 정확하고 일관되게 동작할 수 있다는 것을 보장하기 위한 특성을 말함

만약 해당 클래스가 잘 설계되어 항상 정확하고 일관되게 동작할 수 있다면, 해당 클래스는 스레드에 있어서 안전(Thread safe)하다고 볼 수 있음

2. 스레드 안전성 문제(Thread safety issue)

반대로 해당 클래스가 잘 설계되어 있지 않다면, 해당 클래스는 스레드에 있어서 안전하지 않다고 볼 수 있으며, 이를 스레드 안전성 문제라고 함

멀티 스레딩 환경에서 동작하는 프로그램 내 2개 이상의 스레드가 하나의 공유 자원에 동시에 접근하여 값을 읽거나 변경하였을 때 발생할 수 있는 데이터 불일치 문제를 의미
→ 따라서 프로그램이 매번 다르게 동작하는 결과가 발생함

💡
Tip

스레드 안전성 문제가 발생할 수 있는 대표적인 기준

스레드 안전성 문제가 발생할 수 있는 기준은 아래와 같음

  1. 각 스레드들이 공통으로 접근할 수 있는 영역인지?
    → 스레드 안전성 문제 발생
  2. 각 스레드들이 자신만 접근 가능한 영역인지?
    → 스레드 안전성 문제가 발생하지 않음
Last updated on