public class A {
public final static A INSTANCE = new A();
private A(){}
}
这个类是不是线程安全的呢?单例能这样写吗?
这种写法是线程安全的。
但是在该类一开始被加载的时候INSTANCE = new A()就会被执行。
具体参考陈皓的博客深入浅出单实例Singleton设计模式
介绍得非常详细。
如果单线程中初始化,多线程中应用就没问题。
public class A{
private static A a=null;
private A(){}
public static synchronized A getInstance(){
if(a==null){
a = new A();
}
return a;
}
}你可以这样写,类加载的时候就不会创建a