1、饿汉式,在类装载的时候就完成实例化。避免了线程同步问题,但是没有达到Lazy Loading的效果,可能会造成内存的浪费。
2、懒汉式,起到了Lazy Loading的效果,但是只能在单线程下使用。但是它的效率很低,也不能起到线程同步的作用。
3、双重检查,实例化代码只用执行一次,后面再次访问时,判断if (singleton == null),直接return实例化对象。它的线程安全;延迟加载;效率较高。
4、静态内部类,与饿汉式方式采用的机制类似。都采用了类装载的机制来保证初始化实例时只有一个线程。它需要在实例化时,调用getInstance方法,才能装载SingletonInstance类,完成Singleton的实例化。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。