com.jn.langx.util.struct.ThreadLocalHolder Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of langx-java Show documentation
Show all versions of langx-java Show documentation
Java lang extensions for java6+, a supplement to , replacement of a Guava, commons-lang.
Core utilities, Collection utilities, IO utilities, Cache, Configuration library ...
package com.jn.langx.util.struct;
import com.jn.langx.util.Emptys;
import com.jn.langx.util.function.Supplier0;
public class ThreadLocalHolder implements ValueHolder {
private ThreadLocal local;
public ThreadLocalHolder() {
this((V) null);
}
public ThreadLocalHolder(final Supplier0 supplier) {
this.local = new ThreadLocal() {
@Override
protected V initialValue() {
return supplier == null ? null : supplier.get();
}
};
}
public ThreadLocalHolder(final V value) {
this(new Supplier0() {
@Override
public V get() {
return value;
}
});
}
@Override
public void set(V v) {
local.set(v);
}
@Override
public V get() {
return local.get();
}
public void reset() {
local.remove();
}
@Override
public boolean isEmpty() {
return Emptys.isEmpty(get());
}
@Override
public boolean isNull() {
return get() == null;
}
@Override
public void setHash(int hash) {
// NOOP
}
@Override
public int getHash() {
Object v = get();
if (v == null) {
return 0;
}
return v.hashCode();
}
}