饿汉式单例:
public class Singleton
{
private static final Singleton singleton = new Singleton();
/*
* 必须为私有构造器,为了为避免人为的new 操作,这样违反了单例的原则了
*/
private Singleton()
{
}
public static Singleton getInsance()
{
return singleton;
}
}
懒汉式单例 :
public class Singleton
{
/*
* 与饿汉式不同,不能加final关键字, 因为它的值要改变
*/
private static Singleton singleton = null;
/*
* 必须为私有构造器,为了为避免人为的new 操作,这样违反了单例的原则了
*/
private Singleton()
{
}
/*
* 必须加同步关键字synchronized,为了避免多线程同时访问时,创建多个实例
*/
public synchronized static Singleton getInsance()
{
if (singleton == null)
{
singleton = new Singleton();
}
return singleton;
}
}
饿汉式单例不涉及线程安全问题,也不需要加条件判断,性能更好一点, 相比较而言,饿汉式单例也是用得最多的。