Sobes.tech
Back to questions
Junior — Middle
59

Имел ли опыт использования класса ThreadLocal в своих проектах?

Companies where asked
Т-БанкТ-Банк

Answer from AI

sobes.tech AI

Класс ThreadLocal в Java используется для хранения данных, которые уникальны для каждого потока. Это значит, что каждый поток имеет свою собственную копию переменной, и изменения в одном потоке не влияют на значения в других.

Пример использования ThreadLocal:

public class ThreadLocalExample {
    private static ThreadLocal<Integer> threadLocal = ThreadLocal.withInitial(() -> 0);

    public static void main(String[] args) {
        Runnable task = () -> {
            int value = threadLocal.get();
            value += 1;
            threadLocal.set(value);
            System.out.println(Thread.currentThread().getName() + " - " + threadLocal.get());
        };

        Thread thread1 = new Thread(task, "Поток 1");
        Thread thread2 = new Thread(task, "Поток 2");

        thread1.start();
        thread2.start();
    }
}

В этом примере каждый поток имеет свою копию переменной, и изменения в одном потоке не влияют на другой. ThreadLocal полезен, когда нужно хранить состояние, специфичное для потока, например, в многопоточных приложениях для хранения контекста пользователя или соединения с базой данных.