Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Java: concurrency, thread, storage

Как ThreadLocal используется для передачи параметров, привязанных к потоку?

Вопрос проверяет знание работы ThreadLocal для хранения данных, уникальных для каждого потока.

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

ThreadLocal позволяет хранить данные, которые доступны только внутри одного потока. Это полезно для передачи контекста (например, ID пользователя) без явной передачи параметров.

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

Как работает:

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

  • Данные автоматически удаляются при завершении потока.

Пример:

ThreadLocal<String> threadId = ThreadLocal.withInitial(() -> "ID-" + Thread.currentThread().getId());

Runnable task = () -> {
    	System.out.println(threadId.get()); // Уникальный ID для каждого потока
};

new Thread(task).start();
new Thread(task).start();

Применение:

  • Хранение контекста в веб-приложениях (например, Spring Security).

  • Логирование с идентификатором потока.

Ограничения:

  • Может привести к утечке памяти, если не очищать (используйте remove()).

Уровень

  • Рейтинг:

    2

  • Сложность:

    6

Навыки

  • Java

    Java

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

#concurrency

#thread

#storage

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