Thread-safe는 멀티스레드 프로그래밍에서 일반적으로 어떤 함수, 변수, 객체가 여러 스레드로부터 동시 접근이 이루어져도 프로그램 실행에 문제 없음을 말함
하나의 함수가 한 스레드로부터 호출되어 실행 중일때, 다른 스레드가 동일한 함수를 호출하여 동시에 실행되더라도 각 스레드에서 수행 결과가 올바르게 나오는 것으로 정의
Re-entrancy
어떤 함수가 한 스레드에 의해 호출되어 실행 중일 때, 다른 스레드가 그 함수를 호출하더라도 결과가 각각에게 올바로 주어져야한다.
Thread-local storage
공유 자원의 사용을 최대한 줄여 각각의 스레드에서만 접근 가능한 저장소들을 사용함으로써 동시 접근을 막는다.
Mutual exclusion
공유 자원을 꼭 사용해야 할 경우 세마포어, 락을 걸어서 하나의 스레드만 해당 자원에 접근 가능하게 한다.
Atomic operations
공유 자원에 접근할 때 원자 연산을 이용하거나 원자적으로 정의된 접근 방법을 사용함으로써 상호 배제를 구현.
Immutable Object
객체 생성 이후에 값을 변경할 수 없도록 만든다.