首页 > 代码库 > 单例模式
单例模式
单例模式主要作用:确保一个类最多只有一个实力,并提供一个全局访问点。
经典模式(懒汉):
public class Singleton{ private static Singleton uniqeInstance=null; private Singleton(){} public static Singleton getInstance(){ if(uniqeInstance==bull){ uniqeInstance=new Singleton(); } return uniqeInstance; } }
经典模式在多线程的情况下,会导致不能正常工作;
线程同步锁(懒汉):
public class Singleton{ private static Singleton uniqeInstance=null; private Singleton(){} public static synchronized Singleton getInstance(){ if(uniqeInstance==bull){ uniqeInstance=new Singleton(); } return uniqeInstance; } }
使用同步锁,简单粗暴,但较为消耗资源。在大量调用的放大中不推荐使用。
‘急切’创建实例(饿汉):
public class Singleton{ public volatile static Singleton uniqueInstance = new Singleton(); private Singleton(){} public static Singleton getInstance() { return uniqueInstance ; } }
可以解决多线程的同步问题,直接在类装载就实例化。但在项目中这个方法根本就没有使用到,对内存资源也是有一定的消耗。
双重检查加锁:
public class Singleton { private volatile static Singleton singleton; private Singleton (){} public static Singleton getSingleton() { if (singleton == null) { synchronized (Singleton.class) { if (singleton == null) { singleton = new Singleton(); } } } return singleton; } }
在JDK1.5之后,双重检查锁定才能够正常达到单例效果。
单例模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。