单例模式-创新互联-成都快上网建站

单例模式-创新互联

单例模式singleton
  • 条件
  • 实现方式

创新互联自2013年起,先为丁青等服务建站,丁青等地企业,进行企业商务咨询服务。为丁青企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。条件

1、 只能有一个实列
2、 实力为程序自行创建
3、 像整个系统提供这个实例

实现方式

1、饿汉模式

public class EagerTaskManager {//饿汉模式,类加载时唯一实例会被创建
    private static final EagerTaskManager taskManager = new EagerTaskManager();

    private EagerTaskManager(){}

    public static EagerTaskManager getInstance() {return taskManager;
    }
}

2、懒汉模式

public class LazyTaskManager {//懒汉单列,节省内存空间,使用时在创建单列对象

    private static LazyTaskManager taskManager = null;

    private LazyTaskManager() {}
    
    // 懒汉模式,为避免多个线程同时调用实列方法,使用同步锁
    // 直接在方法上加synchronized解决线程问题,但每次调用该方法都需要同步锁判断,降低了效率
    public static LazyTaskManager getInstance() {if (taskManager == null) {synchronized (LazyTaskManager.class) {// 只对实列方法进行同步锁定即可,如果多个线程同时进入if分支,会产生新的实列,进行双重检查锁定
                if (taskManager == null) {taskManager = new LazyTaskManager();
                }
            }
        }
        return taskManager;
    }
}

3、 IoDH

public class IoDHTaskManager {// 单列对象没有作为成员变量,所以不会随着类加载而实例化
    private IoDHTaskManager(){}

    private static class HolderClass {private final static IoDHTaskManager taskManager = new IoDHTaskManager();
    }

    // 第一次调用该实例化方法,随之静态内部类的加载,实例化该单列对象
    public static IoDHTaskManager getInstance() {return HolderClass.taskManager;
    }
}

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


新闻名称:单例模式-创新互联
URL地址:http://kswjz.com/article/hepho.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流