标签:ati div turn ++ create single count 解决 public
public abstract class EnableCleanSingle<T>{
    private volatile T object;
    private int updateCount;
    public T getObject() {
        if(object == null) {
            synchronized (this){
                if(object == null) {
                    createObject();
                    updateCount++;
                }
            }
        }
     //这里在并发的时候,可能会返回null
        //解决方法:将整个方法都设为synchronized,但影响性能,这里就不改了
        return object;
    }
    public void cleanObject(){
        int old = updateCount;
        if(object != null) {
            synchronized (this) {
                if (updateCount == old) {
                    object = null;
                }
            }
        }
    }
    abstract public T createObject();
}
标签:ati div turn ++ create single count 解决 public
原文地址:https://www.cnblogs.com/math-and-it/p/11404054.html