스레드 안전 - Thread Safe

Tech/Java 2023. 5. 24. 21:19
728x90
728x90

연관 게시물

 

[Java] 자바에서의 스레드 안전(Thread Safe)과 모니터(monitor)

자바에서의 Thread-Safe 1. Lock synchronized 아래 코드는 Synchronized 키워드를 사용하여 스레드의 안전성을 보장했다. @ThreadSafe public class Lock { @GuardedBy("this") private int nextValue; public synchronized int getNext() { r

mag1c.tistory.com

 

 

 

 

 

Thread Safe

스레드 안전(thread safety)은 멀티 스레드 프로그래밍에서 일반적으로 어떤 함수나 변수, 혹은 객체가

여러 스레드로부터 동시에 접근이 이루어져도 프로그램의 실행에 문제가 없음을 뜻한다.

보다 엄밀하게는 하나의 함수가 한 스레드로부터 호출이 되어 실행중일 때, 다른 스레드가 그 함수를 호출하여 동시에 함께 실행되더라도 각 스레드에서의 함수 수행 결과가 올바로 나오는 것으로 정의한다.

 

출처 :https://gompangs.tistory.com/entry/OS-Thread-Safe%EB%9E%80

 

 

다음과 같은 구현 방법들이 있다.

 

재진입성(Re-entrancy)

어떤 함수가 한 스레드에 의해 호출되어 실행중일 때, 다른 스레드가 그 함수를 호출하더라도 그 결과가 각각에게 올바로 주어져야 한다.

 

상호 배제(Mutual exclusion)

공유자원을 꼭 사용해야 할 경우 해당 자원의 접근을 세마포어 등의 으로 통제한다.

 

스레드 지역 저장소(Thread-local storage)

공유 자원의 사용을 최대한 줄여 각각의 스레드에서만 접근 가능한 저장소들을 사용함으로써 동시 접근을 막는다.

 

원자 연산(Atomic operations)

공유 자원에서 접근할 때 원자 연산을 이용하거나, 원자적으로 정의된 접근 방법을 사용함으로써 상호 배제를 구현할 수 있다.

 

 

 

 

 

 

스레드부터 시작해서 CS 지식을 쌓아나갈 수 있길..

 

화이팅~

 

 

 

 

 

참조

https://ko.wikipedia.org/wiki/%EC%8A%A4%EB%A0%88%EB%93%9C_%EC%95%88%EC%A0%84

 

728x90
300x250
mag1c

mag1c

2년차 주니어 개발자.

방명록