Класс Java.lang.InheritableThreadLocal с примерами
Класс java.lang.InheritableThreadLocal расширяет ThreadLocal для обеспечения наследования значений от родительского потока к дочернему потоку: когда дочерний поток создается, дочерний поток получает начальные значения для всех наследуемых локальных переменных потока, для которых родительский поток имеет значения.
Родительский поток, переменная ThreadLocal по умолчанию недоступна для дочернего потока.
Конструктор :
InheritableThreadLocal gfg_tl = new InheritableThreadLocal ();
Это дочерний класс ThreadLocal и, следовательно, все методы, присутствующие в ThreadLocal, по умолчанию доступны для InheritableThreadLocal .
Он содержит только один метод:
Синтаксис:
общедоступный объект childValue (объект parentValue)
Этот метод вызывается (переопределяется) в родительском потоке перед запуском дочернего потока.
- Если мы хотим сделать родительский поток, значение локальной переменной потока доступным для дочернего потока, тогда мы должны перейти к классу InheritableThreadLocal.
- По умолчанию значение дочернего потока точно такое же, как значение родительского потока. Но мы можем предоставить собственное настраиваемое значение для дочернего потока, переопределив метод childValue.
Пример:
Output: Parent Thread Value:parent data Child Thread Value:null (by default initialValue is null)
Output: Parent Thread Value:parent data Child Thread Value:child data
1-й сценарий : в приведенной выше программе, если мы заменим InheritableThreadLocal на ThreadLocal, и мы не переопределим метод childValue, то на выходе получим:
Выход: Значение родительского потока: родительские данные Значение дочернего потока: null (по умолчанию initialValue равно null)
Сценарий 2 : в приведенной выше программе, если мы поддерживаем InheritableThreadLocal и не переопределяем метод childValue, то на выходе получаем:
Выход : Значение родительского потока: родительские данные Значение дочернего потока: родительские данные
Сценарий 3 : в приведенной выше программе, если мы поддерживаем InheritableThreadLocal и также переопределяем метод childValue, то вывод будет:
Выход: Значение родительского потока: родительские данные Значение дочернего потока: дочерние данные
Вниманию читателя! Не переставай учиться сейчас. Ознакомьтесь со всеми важными концепциями Java Foundation и коллекций с помощью курса "Основы Java и Java Collections" по доступной для студентов цене и будьте готовы к работе в отрасли. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .