All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.jn.langx.util.struct.ThreadLocalHolder Maven / Gradle / Ivy

Go to download

Java lang extensions for java6+, a supplement to , replacement of a Guava, commons-lang. Core utilities, Collection utilities, IO utilities, Cache, Configuration library ...

There is a newer version: 4.8.2
Show newest version
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();
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy