AtomicSafeInitializer.java
931 Bytes
package org.apache.commons.lang3.concurrent;
import java.util.concurrent.atomic.AtomicReference;
public abstract class AtomicSafeInitializer<T>
implements ConcurrentInitializer<T>
{
private final AtomicReference<AtomicSafeInitializer<T>> a = new AtomicReference();
private final AtomicReference<T> b = new AtomicReference();
public final T get()
throws ConcurrentException
{
Object localObject;
for (;;)
{
localObject = this.b.get();
if (localObject != null) {
break;
}
if (this.a.compareAndSet(null, this)) {
this.b.set(initialize());
}
}
return (T)localObject;
}
protected abstract T initialize()
throws ConcurrentException;
}
/* Location: /home/merong/decompile/hackery-dex2jar.jar!/org/apache/commons/lang3/concurrent/AtomicSafeInitializer.class
* Java compiler version: 6 (50.0)
* JD-Core Version: 0.7.1
*/