() Если нужно, чтобы каждый поток имел собственное значение переменной, используйте ThreadLocal. Метод withInitial() позволяет задать значение по умолчанию, которое будет создаваться лениво — только при первом обращении потока. Пример: ThreadLocal<Integer> counter = ThreadLocal.withInitial(() -> 0); counter.get(); // 0 counter.set(70); counter.get(); // 70 Что происходит: • каждый поток получает свою независимую копию переменной • значение создаётся только когда поток впервые вызывает get() • нет гонок данных и не нужна синхронизация Это особенно полезно для: • хранения контекста запроса • connection/session объектов • временных данных в параллельных задачах • оптимизации без synchronized Главное помнить: ThreadLocal хранит данные на уровне потока, а не объекта.