단일 스레드에서 액세스 할 수 있도록 설계된 정상적인 클래스가 있으므로 thread-safe
많은 스레드가 동시에 하나의 인스턴스를 사용할 수 있도록하려고합니다. 정적으로 만들고 locks
을 사용하여 몇 가지 클래스 수준 메서드 및 변수가 있습니다. thread-safe
. 또한 로컬 변수를 사용하는 메소드는 기본적으로 안전합니다 (각 스레드는 스택을 가짐).ThreadLocal을 사용하여 스레드 안전성을 보장하는 일반 클래스 <T>
내 질문은 이전 클래스의 properties
또는 더 일반적으로 non-static
변수입니다. ThreadLocal<T>
을 사용하고 각 스레드는 properties
이라는 고유 한 집합을 사용할 수 있습니까? 확실히 locks
과 thread-safety
개의 문제가 setters
(내 생각에는 getters
이 안전하다고 가정)을 사용합니다.
그리고 ThreadLocal<T>
의 실적이 우수한가요?
이 클래스가 수행하는 작업과 여러 스레드의 간섭이있는 이유에 대해 설명하지 않으면 아무도 좋은 대답을 줄 수 없습니다. – Anon
ThreadLocal이 정확히 무엇을한다고 생각합니까? 왜냐하면 나는 그것이 당신이 생각하는 것을하지 않는다고 생각하기 때문입니다. 스레드 로컬 저장소가 올바른 솔루션이라고 생각하는 이유를 설명 할 수 있습니까? –
@ Eric : 스레드에 대한 변수를 로컬 변수로 읽습니다. 그래서 우리는 실행중인 스레드의 수만큼 속성을 가지고 있습니다. 따라서 객체는 스레드 당 상태를 가질 수 있습니다. – Xaqron