Встречается на собеседованиях • сегодня
В чем разница между обычной и ThreadLocal переменной
Обычная переменная доступна всем потокам, что может привести к race condition. ThreadLocal создает отдельную копию переменной для каждого потока, изолируя данные.
Пример:
```java
class Example {
static int sharedCounter = 0;
static ThreadLocal threadLocalCounter = ThreadLocal.withInitial(() -> 0);
public static void main(String[] args) {
Runnable task = () -> {
sharedCounter++;
threadLocalCounter.set(threadLocalCounter.get() + 1);
System.out.println("Shared: " + sharedCounter + ", ThreadLocal: " + threadLocalCounter.get());
};
new Thread(task).start();
new Thread(task).start();
}
}
```
Вывод может быть:
```
Shared: 2, ThreadLocal: 1
Shared: 2, ThreadLocal: 1
```
SharedCounter общий для потоков, а threadLocalCounter у каждого свой. ThreadLocal часто используют для хранения контекста (например, в Spring Security).

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