Package gw.util.concurrent
Class LockingLazyVar<T>
- java.lang.Object
-
- gw.util.concurrent.LockingLazyVar<T>
-
public abstract class LockingLazyVar<T> extends Object
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interfaceLockingLazyVar.LazyVarInit<Q>A simple init interface to make LockingLazyVar's easier to construct from gosu.
-
Constructor Summary
Constructors Modifier Constructor Description LockingLazyVar()Constructs a LockingLazyVar that will use itself as the object of synchronization.protectedLockingLazyVar(Lock lock)Constructs a LockingLazyVar that will synchronize on the given object.
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description Tclear()Clears the variable, forcing the next call toget()to re-calculate the value.voidclearNoLock()Tget()protected abstract Tinit()protected voidinitDirectly(T val)booleanisLoaded()static <Q> LockingLazyVar<Q>make(LockingLazyVar.LazyVarInit<Q> init)Creates a new LockingLazyVar based on the type of the LazyVarInit passed in.static <Q> LockingLazyVar<Q>make(Lock lock, LockingLazyVar.LazyVarInit<Q> init)
-
-
-
Field Detail
-
NULL
protected static final Object NULL
-
-
Constructor Detail
-
LockingLazyVar
public LockingLazyVar()
Constructs a LockingLazyVar that will use itself as the object of synchronization.
-
LockingLazyVar
protected LockingLazyVar(Lock lock)
Constructs a LockingLazyVar that will synchronize on the given object.
-
-
Method Detail
-
get
public final T get()
- Returns:
- the value of this lazy var, created if necessary
-
init
protected abstract T init()
-
clear
public final T clear()
Clears the variable, forcing the next call toget()to re-calculate the value.
-
clearNoLock
public final void clearNoLock()
-
initDirectly
protected void initDirectly(T val)
-
isLoaded
public boolean isLoaded()
-
make
public static <Q> LockingLazyVar<Q> make(LockingLazyVar.LazyVarInit<Q> init)
Creates a new LockingLazyVar based on the type of the LazyVarInit passed in. This method is intended to be called with blocks from Gosu.
-
make
public static <Q> LockingLazyVar<Q> make(Lock lock, LockingLazyVar.LazyVarInit<Q> init)
-
-