单件模式确保一个类只有一个实例,并提供一个全局访问点。由于比较简单,这里只给出具体代码。
其中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; } }