InheritableThreadLocal — 부모 스레드에서 자식 스레드로 값을 물려주는 스레드 로컬

InheritableThreadLocal — 부모 스레드에서 자식 스레드로 값을 물려주는 스레드 로컬

InheritableThreadLocal<T>ThreadLocal을 확장해 부모 스레드의 값을 자식 스레드로 상속하도록 해 주는 클래스예요. 자식 스레드가 만들어질 때, 부모가 값을 갖고 있는 모든 inheritable 스레드 로컬 변수에 대해 자식이 초기 값을 받아요.

출처: Java API Reference

본문

보통 자식의 값은 부모와 동일하지만, 이 클래스의 childValue 메서드를 재정의하면 자식의 값을 부모 값의 임의 함수로 만들 수도 있어요.

inheritable 스레드 로컬 변수는, 변수에 담는 스레드별 속성(예: 사용자 ID, 트랜잭션 ID)이 생성되는 모든 자식 스레드에 자동으로 전달되어야 할 때 일반 스레드 로컬보다 선호돼요.

새 스레드를 만들 때 inheritable 스레드 로컬 변수의 초기 값을 받지 않도록 선택(opt out) 하는 것도 가능해요 (Thread.Builder.inheritInheritableThreadLocals(boolean) 참고).

상속 구조는 다음과 같아요.

java.lang.Object
  java.lang.ThreadLocal<T>
    java.lang.InheritableThreadLocal<T>

생성자

  • InheritableThreadLocal() — inheritable 스레드 로컬 변수를 생성해요.

메서드

  • protected T childValue(T parentValue) — 자식 스레드가 만들어지는 시점에, 부모 값을 함수로 받아 이 변수의 자식 초기 값을 계산해요. 자식이 시작되기 전에 부모 스레드 안에서 호출돼요. 기본 구현은 입력 인자를 그대로 반환하므로, 다른 동작을 원하면 재정의하면 돼요.

더 알아보기 (Learn more)