Sobes.tech
Назад к вопросам
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();
    }
}

В этом примере каждый поток работает со своей собственной копией переменной, что исключает гонки данных.