在单线程下的单例:
定义一个测试类: public class Test{
public static final Test INSTANCE = new Test();
private Test(){} //将构造函数设为私有不可在创建实例
}
在多线程下的单例:
定义一个测试类: public class Test{
private static Test INSTANCE = null;
private Test(){}
public static Test getInstance(){
if (INSTANCE == null) {
synchronized (INSTANCE) {//这里设置一个同步锁的目的是一次只能来一个线程,如果来了一次后INSTANCE就初始化了
//接下来同时来n个线程同时调用此方法都不会出问题了
if (INSTANCE == null) {
INSTANCE = new Test();
}
}
}
return INSTANCE;
}
}