标签: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