可清除的单例对象获取类

Posted math-and-it

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了可清除的单例对象获取类相关的知识,希望对你有一定的参考价值。

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();


 

以上是关于可清除的单例对象获取类的主要内容,如果未能解决你的问题,请参考以下文章

线程安全的单例模式

Java中的单例模式(Singleton Pattern in Java)

java的单例设计模式

C#中各版本的单例模式

几种常见的单例模式

Java中的单例模式