|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES All Classes | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectjava.lang.ref.Reference<T>
java.lang.ref.WeakReference<T>
com.atlassian.util.concurrent.LazyReference<V>
com.atlassian.jira.util.concurrent.ThreadsafeLazyLoadedReference<V>
LazyReference
instead.
@Deprecated public abstract class ThreadsafeLazyLoadedReference<V>
Thread-safe lock-less (see note) reference that is not constructed until required. This class is used to maintain a
reference to an object that is expensive to create and must be constructed once and once only. Therefore this
reference behaves as though the final
keyword has been used (you cannot reset it once it has been
constructed).
When using this class you need to implement the LazyReference.create()
method to return the object this reference will
hold.
For instance:
final ThreadsafeLazyLoadedReference ref = new ThreadsafeLazyLoadedReference() { protected Object create() throws Exception { // Do some useful object construction here return new MyObject(); } };
Then call to get a reference to the object:
MyObject myLazyLoadedObject = (MyObject) ref.get()
Interruption policy is that if you want to be cancellable while waiting for another thread to create the value,
instead of calling LazyReference.get()
call LazyReference.getInterruptibly()
. If your LazyReference.create()
method throws an
InterruptedException
however, it will be the causal exception inside the runtime
exception that LazyReference.get()
or LazyReference.getInterruptibly()
throws and your LazyReference.create()
will not be called again.
Nested Class Summary |
---|
Nested classes/interfaces inherited from class com.atlassian.util.concurrent.LazyReference |
---|
com.atlassian.util.concurrent.LazyReference.InitializationException |
Constructor Summary | |
---|---|
ThreadsafeLazyLoadedReference()
Deprecated. |
Method Summary |
---|
Methods inherited from class com.atlassian.util.concurrent.LazyReference |
---|
cancel, create, get, getInterruptibly, isInitialized |
Methods inherited from class java.lang.ref.Reference |
---|
clear, enqueue, isEnqueued |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public ThreadsafeLazyLoadedReference()
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES All Classes | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |