1.静态类内部加载
1 /** 2 * Created by BlueMond on 2018/3/25. 3 */ 4 public class SingletonModel { 5 private static class SingletonIn{ 6 public static SingletonModel special = new SingletonModel(); 7 } 8 private SingletonModel(){ 9 10 } 11 public static SingletonModel instance(){ //static very important for the method be found, the SM() is private!!! 12 return SingletonIn.special; 13 } 14 }
2.双重校验锁法
1 public class SingletonDemo { 2 private volatile static SingletonDemo instance; 3 private SingletonDemo(){ 4 System.out.println("Singleton has loaded"); 5 } 6 public static SingletonDemo getInstance(){ 7 if(instance==null){ 8 synchronized (SingletonDemo.class){ 9 if(instance==null){ 10 instance=new SingletonDemo(); 11 } 12 } 13 } 14 return instance; 15 } 16 }