关于Java中的单例模式
一.特点:
①单例类只能有一个实例
②单例类必须自己自己创建自己的唯一实例
③单例类必须给所有其他对象提供这一实例
二.实现方法:
①饿汉式
public class Singleton1{ private Singleton1(); private static Singleton1 single=new Singleton1(); public static final Singleton1 getInstance(){ return single; } }
②懒汉式1(线程不安全)
public class Singleton1{ private Singleton1(); private static Singleton1 single=null; public static Singleton1 getInstance(){ if(single==null){ single=new Singleton1(); } return single; } }
这种方法因为在getInstance方法中没有添加线程锁,所有当有多个线程同时访问该方法时就会产生多个Singleton1实例。
③懒汉式2(线程安全,但是效率不高,即加入线程锁[线程锁的地方会浪费时间,若可以减少判断线程锁即可节约时间])
public class Singleton1{ private Singleton1(); private static Singleton1 single=null; public static synchronized Singleton1 getInstance(){ if(single==null){ single=new Singleton1(); } return single; } }
④懒汉式3(线程安全,效率也高,即双重判断)
public class Singleton1{ private Singleton1(); private static Singleton1 single=null; public static Singleton1 getInstance(){ if(single==null){ synchronized(Singleton1.class){ if(single==null){ s=new Singleton1(); } } } return single; } }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。