饿汉式_静态代码块

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

懒汉式_双重检查

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

懒汉式_静态内部类

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

饿汉式_枚举

  1. public enum Singleton {
  2. INSTANCE;
  3. public void doProcess() {
  4. System.out.println("singleton");
  5. }
  6. }