单例模式

public class Singleton {

    private static Singleton instance = null;

    private Singleton() {
    }

    /*
     * 懒汉单例模式,线程不安全
     */
    public static Singleton getInstanceLazy() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }

    /*
     * 同步单例模式1,线程安全,浪费时间,需要判断同步锁
     */
    public static synchronized Singleton getInstanceSync1() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }

    /*
     * 同步单例模式2,线程安全,浪费时间,需要判断同步锁
     */
    public static Singleton getInstanceSync2() {
        synchronized (Singleton.class) {
            if (instance == null) {
                instance = new Singleton();
            }
        }
        return instance;
    }

    /*
     * 双重校验单例模式,并发量不多,安全性不高的情况下使用,可能出现JVM编译过程中,指令重排的优化过程,导致
     * 对象还没有初始化,就分配了空间,也就是说instance!=null,但是却没有初始化
     */
    public static Singleton getInstanceDoubleSync() {
        if (instance != null) {
            synchronized (Singleton.class) {
                if (instance == null) {
                    instance = new Singleton();
                }
            }
        }
        return instance;
    }
    
    /*
     * 内部类单例模式,线程安全,延迟加载,(内部静态类会延迟加载,即用到的时候再显示)
     */
    private static class SingletonHolder {
        private static Singleton singleton = new Singleton();
    }
    
    public static Singleton getInstanceInner(){
        return SingletonHolder.singleton;
    }
}
public enum SingletonEnum {  
    /** 
     * 1.从Java1.5开始支持; 
     * 2.无偿提供序列化机制; 
     * 3.绝对防止多次实例化,即使在面对复杂的序列化或者反射攻击的时候; 
     */  
  
    instance;  
  
    private String others;  
  
    SingletonEnum() {  
  
    }  
  
    public void method() {  
        System.out.println("SingletonEnum");  
    }  
  
    public String getOthers() {  
        return others;  
    }  
  
    public void setOthers(String others) {  
        this.others = others;  
    }  
}  

 

转载于:https://www.cnblogs.com/imeiling/p/6393647.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值