Встречается на собеседованиях • сегодня
Что такое ThreadLocal
`ThreadLocal` в Java — это класс, позволяющий хранить данные, специфичные для каждого потока. Каждый поток имеет свою независимую копию переменной, что исключает проблемы синхронизации.
**Пример:**
```java
public class ThreadLocalExample {
private static final ThreadLocal threadLocalValue = ThreadLocal.withInitial(() -> 0);
public static void main(String[] args) {
Runnable task = () -> {
int value = threadLocalValue.get();
threadLocalValue.set(value + 1);
System.out.println(Thread.currentThread().getName() + ": " + threadLocalValue.get());
};
new Thread(task).start();
new Thread(task).start();
}
}
```
**Вывод:**
```
Thread-0: 1
Thread-1: 1
```
Каждый поток увеличивает свою копию `threadLocalValue`, не влияя на другие.
**Используется для:**
- Хранения контекста (например, пользовательской сессии в веб-приложениях).
- Избежания передачи параметров через методы.
- Потокобезопасных структур (SimpleDateFormat и др.).
⚠️ Важно очищать `ThreadLocal` (через `remove()`), иначе возможны утечки памяти, особенно в пулах потоков.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы