懒汉式线程不安全、调用效率不高、但是可以延迟加载)
1.线程不安全(可以解决):对getInstance方法进行synchronized
2.调用效率不高:因为对getInstance方法进行了sysnchronized
3.可以延迟加载:再第一次获取单例的时候再创建对象步骤
1.私有化构造器
2.提供一个私有的静态的该类对象的引用
3.一个公有的静态的同步方法,返回单例对象(第一次调用该方法时创建单例对象)说明
1.可以延迟加载,更好的利用资源。
2.存在对方法的synchronized,并发调用效率低。
测试代码
package top.itcourse.gof23;
/**
* 单例模式懒汉式:
* 1.构造器私有
* 2.一个私有的静态的该类对象的引用
* 3.一个公有的静态的同步方法,获取单例对象(第一次调用该方法时创建对象)
*
* 说明:
* 1.可以延迟加载,更好的利用资源。
* 2.存在synchronized,并发调用效率低。
*/
public class SingletonLazy {
// 1.构造器私有
private SingletonLazy() {
}
// 2.一个私有的静态的该类对象的引用
private static SingletonLazy sl;
// 3.一个公有的静态方法,获取单例对象(第一次调用该方法时创建对象)
// synchronized是为了解决线程安全问题
public static synchronized SingletonLazy getInstance() {
if(sl == null) {
sl = new SingletonLazy();
}
return sl;
}
}
其它
关注下方微信公众号,
回复:
DM.code
欢迎加入交流群:451826376
更多信息:www.itcourse.top