Вопрос проверяет знание работы 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()).