单件模式确保一个类只有一个实例,并提供一个全局访问点。由于比较简单,这里只给出具体代码。
其中volatile用来修饰被不同线程访问和修改的变量。如果没有volatile,基本上会导致这样的结果:
要么无法编写多线程程序,要么编译器失去大量优化的机会。
public class Singleton {
private volatile static Singleton uniqueInstance;
private Singleton(){}
public static Singleton getInstance()
{
if(uniqueInstance==null)
{
synchronized(Singleton.class)
{
if(uniqueInstance==null)
{
uniqueInstance=new Singleton();
}
}
}
return uniqueInstance;
}
}