Первая лекция шестой сессии части 1 курса [Modern Backend] — «Scoped Values (1)».
В этой лекции мы подробно рассмотрим предпосылки и необходимость Scoped Values, официально принятого в качестве стандартной возможности в Java 25, а также структурные ограничения и риски ThreadLocal, который долгое время использовался для передачи контекста.
📌 Ключевые темы:
-
Сравнение трёх способов передачи общих данных между слоями (аутентификация, идентификаторы трассировки и т. д.): передача параметров / статические хранилища / scoped values
-
Анализ внутренней структуры ThreadLocalMap и причин утечек памяти / инцидентов, связанных с раскрытием информации
-
Три ограничения ThreadLocal (изменяемость, управление временем жизни, затраты на наследование)
-
Разбор нестабильности ручной передачи контекста (set/clear) на основе анализа кода из предыдущей, пятой лекции
-
Почему предпосылка повторного использования ThreadLocal перестаёт работать в эпоху виртуальных потоков
-
InheritableThreadLocal и ScopedValue (тяжёлое копирование map против лёгкого совместного использования ссылок и гарантированной неизменяемости)
Шаг за шагом исследуем предпосылки проектирования Scoped Values, которые безопасно обеспечивают соблюдение допустимой области действия данных на уровне языка, выходя за рамки существующего подхода, полностью полагавшегося на осторожность разработчиков.