懒汉式: 用了之后才初始化

  1. public class Singleton {
  2. // volatile防止指定重排序, 及内存可见性
  3. private static volatile Singleton instance = null;
  4. private Singleton() { }
  5. public static Singleton getInstance() {
  6. if (instance == null) {
  7. synchronized(Singleton.class) {
  8. if (instance == null){
  9. instance = new Singleton();
  10. }
  11. }
  12. }
  13. return instance;
  14. }
  15. }

恶汉式

  1. public class Singleton {
  2. private static Singleton instance = null;
  3. static {
  4. instance = new Singleton();
  5. }
  6. private Singleton() { }
  7. public static Singleton getInstance() {
  8. return this.instance;
  9. }
  10. }

破坏懒汉式单例与饿汉式单例