Встречается на собеседованиях • сегодня

В чем разница между обычной и 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).
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы