TGViewer
Библиотека Java разработчика Библиотека Java разработчика @bookjava · 10.1K subscribers
Post #4333 348
🧠 Ленивая инициализация через Supplier — элегантная альтернатива double-checked locking

Когда нужно отложить создание тяжёлого объекта до первого обращения, многие вспоминают double-checked locking:


private volatile SomeHeavyObject obj;

public SomeHeavyObject getObj() {
if (obj == null) {
synchronized (this) {
if (obj == null) {
obj = new SomeHeavyObject();
}
}
}
return obj;
}


⚠️ Многословно, хрупко, легко ошибиться. Есть лучше.

📌 Современный подход — использовать Supplier с ленивой инициализацией:


private final Supplier<SomeHeavyObject> lazyObj = Suppliers.memoize(SomeHeavyObject::new);

public SomeHeavyObject getObj() {
return lazyObj.get();
}


💡 Suppliers.memoize — из Guava. Он гарантирует потокобезопасную инициализацию один раз при первом вызове get().

Плюсы:
— Читается за секунду
— Потокобезопасно
— Нет дублирования кода
— Легко тестировать и заменять

🔁 Альтернатива в чистой Java: использовать AtomicReference и updateAndGet, но это уже длиннее и менее выразительно.

Если используешь Spring — можно просто обернуть бин в @Lazy. Но вне Spring, в обычных Java-приложениях или утилитах — Supplier с memoize() идеален.

📲 Мы в MAX

👉@BookJava
  • 👍 1
  • 🔥 1
More from @bookjava
  1. Sep 23, 2026Что такое механизм try-with-resources? Механизм try-with-resources в Java — это конструкци…
  2. Sep 21, 2026📌 picocli — это современная библиотека для создания CLI-приложений на Java. Она упрощает…
  3. Sep 18, 2026Double-brace инициализация в Java — это идиома, которая используется для инициализации кол…
  4. Sep 16, 2026🧠@Value vs @ConfigurationProperties — не выбирай наобум Оба способа хороши для конфигурац…
  5. Sep 14, 2026🧠 Трюк с @EventListener в Spring — убираем лишний @TransactionalEventListener Когда тебе…
  6. Sep 10, 2026👩‍💻 HTTP-сервер на чистой Java за 30 минут Приглашаем на открытый урок. 🗓 21 сентября в…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →