扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
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元起,快前往官网查看详情吧
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流