반응형
Thread Safe에 대해서 알아보기 전에 Thread란 무엇인지 부터 알아보자..!
💡Thread란?
스레드(Thread)는 컴퓨터 프로세스 내에서 실행되는 가장 작은 실행 단위입니다. 스레드는 프로세스 내에서 독립적으로 실행되며, 각각의 스레드는 고유한 코드 흐름을 가지고 있습니다.모든 프로세스에는 한 개 이상의 스레드가 존재하여 작업을 수행합니다. 또한, 두 개 이상의 스레드를 가지는 프로세스를 멀티스레드 프로세스(multi-threaded process)라고 합니다.
💡Thread Safe란?
"Thread Safe(스레드 안전)"란 다중 스레드 환경에서 여러 스레드가 동시에 하나의 자원 또는 데이터를 접근하더라도 예상대로 동작하는 상태를 의미합니다.보다 엄밀하게는 하나의 함수가 한 스레드로부터 호출되어 실행 중일 때, 다른 스레드가 그 함수를 호출하여 동시에 함께 실행되더라도 각 스레드에서의 함수의 수행 결과가 올바로 나오는 것으로 정의한다.
스레드 안전성을 확보하려면 다음과 같은 방법을 사용합니다.
- 동기화(Synchronization): 공유 자원에 접근할 때 하나의 스레드만 접근할 수 있도록 잠금(lock)을 설정하거나, 스레드 간의 작업을 동기화하여 동시 접근을 막습니다.
- 원자성(Atomicity): 원자적 연산을 사용하여 여러 단계의 작업을 한 번에 실행하는 방식으로, 스레드 간의 경합을 줄일 수 있습니다.
- 스레드 로컬 변수(Thread-Local Variables): 각 스레드에게 독립적인 데이터를 제공하여 공유 자원에 대한 접근을 줄입니다.
- 불변 객체(Immutable Objects): 객체의 상태를 변경할 수 없게 설계하여 다중 스레드에서 안전하게 공유할 수 있습니다.
- 스레드 안전한 자료 구조(Thread-Safe Data Structures): 자료 구조 자체가 스레드 안전하게 구현되어 있는 컬렉션 클래스를 사용합니다.
반응형
'CS' 카테고리의 다른 글
[CS] Java신입개발자 기술면접 질문 정리 (업데이트 中) (0) | 2023.09.26 |
---|---|
[CS] Maven이란 ? (0) | 2023.09.23 |
[CS] TCP와 UDP (0) | 2023.09.22 |
[CS]Get방식과 Post방식 (0) | 2023.09.22 |
[CS] 웹 서버(Web Server)와 웹 애플리케이션 서버(Web Application Server, WAS) (0) | 2023.09.18 |