标签:style ar java sp on bs 时间 size new
一.特点:
①单例类只能有一个实例
②单例类必须自己自己创建自己的唯一实例
③单例类必须给所有其他对象提供这一实例
二.实现方法:
①饿汉式
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; } }
标签:style ar java sp on bs 时间 size new
原文地址:http://my.oschina.net/u/1415486/blog/339762