一.特色:java
①单例类只能有一个实例安全
②单例类必须本身本身建立本身的惟一实例spa
③单例类必须给全部其余对象提供这一实例线程
二.实现方法:code
①饿汉式对象
public class Singleton1{ private Singleton1(); private static Singleton1 single=new Singleton1(); public static final Singleton1 getInstance(){ return single; } }
②懒汉式1(线程不安全)get
public class Singleton1{ private Singleton1(); private static Singleton1 single=null; public static Singleton1 getInstance(){ if(single==null){ single=new Singleton1(); } return single; } }
这种方法由于在getInstance方法中没有添加线程锁,全部当有多个线程同时访问该方法时就会产生多个Singleton1实例。class
③懒汉式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; } }