java单例模式小汇总

本文深入探讨了单例模式的不同实现方式,包括懒汉式(利用静态内部类)、饿汉式(静态变量)及双重检查锁定等。分析了每种方式的特点,如资源利用率、线程安全性及首次调用响应时间等。

holder :

资源利用高,不调用就不会被实例,反应不快。

public class Singleton{

     private static class SingletonHolder{

      public final static Singleton instance = new Singleton();

}

     public static Singleton getInstance(){

      return SingletonHolder.instance;

}

private Singleton(){}

}

-----------------------------------------------------------------------------------------

如果有请求需要Singleton则会判断如果当前没有创建Singleton则重新创建,如果已有则直接返回已创建的Singleton。资源利用较为不错,不调用就不会实例。既然如此第一次调用的时候加载肯定会需要一段时间,反应不是很快。

classical :

public class Singleton{

    private static Singleton instance = null;

    private Singleton (){}

    public static Singleton getInstance(){

     if(instance==null){

     instance = new Singleton();

}

    return instance;

}

}

------------------------------------------------------------------------------------------

直接已静态形式创建Singleton,无论是否有需求都在类加载时创建,被调用时反应会很快,线程安全。如果永远都没被调用就悲剧了,这个对资源的利用太浪费了。

public class Singleton{

   private Singleton(){}

   private final static Singleton instance = new Singleton();

   public static Singleton getInstance(){

    returtn instance;

}

}

-------------------------------------------------------------------------------------------------------------

双检测:

不掉用getInstance方法就不会被实例,第一次加载反应慢。

public class Singleton(){

    private staitc Singleton instance = null;

    private Singleton(){}

   

    public static Singleton getInstance(){

    if(instance==null){

      synchronized(Singleton.class){

     if(instance==null){

     instance = new Singleton();

}

}

}

returnn instance;

}

}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值