Назад к вопросам
СБЕР
Senior
4
Для чего используется класс ThreadLocal?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Класс ThreadLocal в Java используется для хранения данных, которые уникальны для каждого потока исполнения. Это значит, что каждый поток имеет свою собственную копию переменной, и данные не пересекаются между потоками.
Это полезно, когда нужно избежать проблем с конкурентным доступом к общим ресурсам без необходимости синхронизации, например, для хранения контекста пользователя, соединений с базой данных или других объектов, специфичных для потока.
Пример использования ThreadLocal:
public class ThreadLocalExample {
private static ThreadLocal<Integer> threadLocalValue = ThreadLocal.withInitial(() -> 0);
public static void main(String[] args) {
Runnable task = () -> {
int value = threadLocalValue.get();
value += 1;
threadLocalValue.set(value);
System.out.println(Thread.currentThread().getName() + ": " + threadLocalValue.get());
};
Thread thread1 = new Thread(task);
Thread thread2 = new Thread(task);
thread1.start();
thread2.start();
}
}
В этом примере каждый поток работает со своей собственной копией переменной, что исключает гонки данных.