From a39467dbcd062ed1471e44450d495ba7a9bd8942 Mon Sep 17 00:00:00 2001 From: Jonathan Cobb Date: Thu, 23 Jul 2020 00:51:34 -0400 Subject: [PATCH] add ZillaRuntime.lazyGet --- .../cobbzilla/util/daemon/ZillaRuntime.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/main/java/org/cobbzilla/util/daemon/ZillaRuntime.java b/src/main/java/org/cobbzilla/util/daemon/ZillaRuntime.java index 992ca06..3c28d0e 100644 --- a/src/main/java/org/cobbzilla/util/daemon/ZillaRuntime.java +++ b/src/main/java/org/cobbzilla/util/daemon/ZillaRuntime.java @@ -457,4 +457,23 @@ public class ZillaRuntime { } } } + + public interface LazyGet { T init();} + + public static T lazyGet(AtomicReference ref, LazyGet init, LazyGet error) { + if (ref.get() == null) { + //noinspection SynchronizationOnLocalVariableOrMethodParameter + synchronized (ref) { + if (ref.get() == null) { + try { + ref.set(init.init()); + } catch (Exception e) { + ref.set(error.init()); + } + } + } + } + return ref.get(); + } + }