懒汉式

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

饿汉式

  1. public class Singleton{
  2. private static Singleton singleton = new Singleton();
  3. private Singleton() {}
  4. public static Singleton getInstance() {
  5. return singleton;
  6. }
  7. }

双检锁

  1. public class Singleton{
  2. private static Singleton singleton;
  3. private Singleton() {}
  4. public static Singleton getInstance() {
  5. if (null == singleton){
  6. synchronized (Singleton.class){
  7. if (null == singleton){
  8. singleton = new Singleton();
  9. }
  10. }
  11. }
  12. return singleton;
  13. }
  14. }

枚举

  1. @Getter
  2. @AllArgsConstructor
  3. public enum Singleton{
  4. INSTANCE(new Test());
  5. private Test test;
  6. }