Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Java: threadlocal, thread safety, context

Что такое ThreadLocal? Практический пример использования.

Вопрос объясняет назначение ThreadLocal и его применение для хранения данных, специфичных для потока.

Короткий ответ

ThreadLocal позволяет хранить данные, которые доступны только одному потоку. Пример: хранение идентификатора пользователя в веб-запросе.

Длинный ответ

Особенности ThreadLocal:

  • Каждый поток имеет свою копию переменной.

  • Значения не передаются между потоками.

Пример использования:

  1. Хранение контекста в веб-приложении:

    private static final ThreadLocal<String> userId = new ThreadLocal<>();
    
    void handleRequest(String user) {
        userId.set(user); // Устанавливаем для текущего потока
        processRequest();
    }
    
    void processRequest() {
        System.out.println("User: " + userId.get()); // Получаем для текущего потока
        userId.remove(); // Очищаем после использования
    }
  2. Для безопасности в многопоточности:

    • Объекты, которые не являются потокобезопасными (например, SimpleDateFormat), можно хранить в ThreadLocal.

Когда использовать:

  • Для данных, которые должны быть изолированы между потоками.

  • В контексте одного запроса (например, Spring Security).

Уровень

  • Рейтинг:

    1

  • Сложность:

    6

Навыки

  • Java

    Java

Ключевые слова

#threadlocal

#thread safety

#context

Подпишись на Java Developer в телеграм