java单例

来源:互联网 发布:淘宝网我是卖家在哪里 编辑:程序博客网 时间:2024/06/07 05:46

/**
 *五、 双重校验锁
 */
classLockSingleton{
    privatevolatile static LockSingleton singleton;
    privateLockSingleton(){}
     
    //详见:http://www.ibm.com/developerworks/cn/java/j-dcl.html
    publicstatic LockSingleton getInstance(){
        if(singleton==null){
            synchronized(LockSingleton.class){
                if(singleton==null){
                    singleton=newLockSingleton();
                }
            }
        }
        returnsingleton;
    }
     
}
/**
 * 四、枚举
 */
enumEnumSingleton{
    INSTANCE;
    publicvoid doSomeThing(){
    }
}
/**
 * 三、静态内部类
 */
classInternalSingleton{
    privatestatic class SingletonHolder{
        privatefinal static  InternalSingleton INSTANCE=newInternalSingleton();
    }  
    privateInternalSingleton(){}
    publicstatic InternalSingleton getInstance(){
        returnSingletonHolder.INSTANCE;
    }
}
/**
 * 二、恶汉
 */
classHungrySingleton{
    privatestatic HungrySingleton singleton=newHungrySingleton();
    privateHungrySingleton(){}
    publicstatic HungrySingleton getInstance(){
        returnsingleton;
    }
}
/**
 * 一、懒汉
 */
classLazySingleton{
    privatestatic LazySingleton singleton;
    privateLazySingleton(){
    }
    publicstatic LazySingleton getInstance(){
        if(singleton==null){
            singleton=newLazySingleton();
        }
        returnsingleton;
    }  
0 0
原创粉丝点击