单例模式:懒汉式和饿汉式
饿汉式:线程安全:构造方法私有化:推荐使用
public class Singleton{
private static Singleton singleton = new Singleton ();//类创建时,就创建一个静态对象,之后不会再改变
private Singleton (){}
public Singleton getInstance(){return singletion;}
}
懒汉式:线程不安全:若生成实例的时候若不加synchronized(线程同步),会发生线程不安全:如:当一个线程执 行到(2)时,还未生成对象,另一个线程执行(1);这时就会发生线程不安全
public class Singleton{
private static Singleton singleton = null;
public static synchronized getInstance(){
if(singleton==null){//(1)
//(2)
singleton = new Singleton();//(3)
}
return singleton;
}
}
饿汉式:线程安全:构造方法私有化:推荐使用
public class Singleton{
private static Singleton singleton = new Singleton ();//类创建时,就创建一个静态对象,之后不会再改变
private Singleton (){}
public Singleton getInstance(){return singletion;}
}
懒汉式:线程不安全:若生成实例的时候若不加synchronized(线程同步),会发生线程不安全:如:当一个线程执 行到(2)时,还未生成对象,另一个线程执行(1);这时就会发生线程不安全
public class Singleton{
private static Singleton singleton = null;
public static synchronized getInstance(){
if(singleton==null){//(1)
//(2)
singleton = new Singleton();//(3)
}
return singleton;
}
}