/**
* Created by wwhhff11 on 16-8-18.
*/publicclassSingleton1 {privatestatic A a = null;
privatestaticclassA {
}
static {
System.out.println("----static----");
a = new A();
}
// 执行方法时候对象才被创建publicstatic A getInstance() {
System.out.println("------getInstance----");
return a;
}
}
/**
* Created by wwhhff11 on 16-8-18.
*/publicclassSingleton1 {privatestatic A a = null;
privatestaticclassA {
}
// 判断不优雅publicstatic A getInstance() {
System.out.println("------getInstance----");
if (a == null) {
synchronized (A.class) {
a = new A();
}
}
return a;
}
}
/**
* Created by wwhhff11 on 16-8-18.
*/publicclassSingleton1 {privatestaticvolatile A a = null;
privatestaticclassA {
}
// 判断不优雅publicstatic A getInstance() {
System.out.println("------getInstance----");
if (a == null) {
synchronized (A.class) {
// double check// 防止重复创建// 如果没有volatile 关键字:不是线程安全的// 在new的过程中分为两步:1. 为对象分配空间,并且指向空间 2.初始化对象// 如果在其他线程使用到了这个static变量然而不为空,会导致异常if (a == null) {
a = new A();
}
}
}
return a;
}
}
/**
* Created by wwhhff11 on 16-8-18.
*/publicclassSingleton1 {privatestatic A a = null;
privatestaticclassA {
}
// 成员内部类优化单例模式privatestaticclassFactory {privatestatic A a = new A();
}
publicstatic A getInstance() {
return Factory.a;
}
}
/** * Created by wwhhff11 on 16-8-18. */public class Singleton1 { private static A a = null; private static class A { } static { System.out.println("----static----"); a =