饿汉式(线程安全、调用效率高、但是不能延迟加载)
1.线程安全:在类加载时完成对象的创建
2.调用效率高:getInstance没有任何同步限制
3.不能延迟加载:正是因为在类加载时就完成了对象的创建步骤:
1.构造器私有
2.提供静态私有的对象
3.提供一个静态公有方法,获取静态私有对象说明:
- static属性会在类装载时进行初始化,此时并不会设计到多线程问题。虚拟机保证只会装载一次该类,所以是线程安全的。
2.如果只是加载类本身,并不需要使用到这个单例的对象,那么会造成资源浪费。
- static属性会在类装载时进行初始化,此时并不会设计到多线程问题。虚拟机保证只会装载一次该类,所以是线程安全的。
测试代码
package top.itcourse.gof23;
/**
* 饿汉式单例模式创建步骤:
* 1.构造器私有
* 2.提供静态私有的对象
* 3.提供一个静态公有方法,获取静态私有对象
*
* 说明:
* 1.对象创建时机:
* static属性会在类装载时进行初始化,此时并不会设计到多线程问题。虚拟机保证只会装载一次该类,
* 所以是线程安全的。
* 2.缺点:
* 如果只是加载类本身,并不需要使用到这个单例的对象,那么会造成资源浪费。
*/
public class SingletonHungry {
// 1.私有构造器
private SingletonHungry() {
}
// 2.提供静态私有的对象
private static SingletonHungry sh = new SingletonHungry();
// 3.提供一个静态公有方法,获取静态私有对象
public static SingletonHungry getInstance() {
return sh;
}
}
其它
关注下方微信公众号,
回复:
DM.code
欢迎加入交流群:451826376
更多信息:www.itcourse.top