懒汉式
    懒汉式,线程安全 双重锁定解决可能的线程安全问题

    1. /**
    2. * 懒汉式,线程安全 双重锁定解决可能的线程安全问题。
    3. * 因为有可能thread1在if(instance==null)判断为真时进入了if体里但又没开始实例化,
    4. * 而这时thread2也进来了,最终就会有2个实例了。
    5. *
    6. * @author liu.hb
    7. *
    8. */
    9. public static class SingletonDemoSave {
    10. private static SingletonDemoSave instance;
    11. private SingletonDemoSave() {
    12. super();
    13. }
    14. public static synchronized SingletonDemoSave getInstance() {
    15. synchronized (SingletonDemoSave.class) {
    16. instance = new SingletonDemoSave();
    17. }
    18. return instance;
    19. }
    20. }

    饿汉式

    1. /**
    2. * 饿汉式,线程安全 类一加载就实例化,提前占用系统资源
    3. *
    4. * @author liu.hb
    5. *
    6. */
    7. public static class SingletonDemo1 {
    8. #创建实例
    9. private static SingletonDemo1 instance = new SingletonDemo1();
    10. private SingletonDemo1() {
    11. super();
    12. }
    13. public static SingletonDemo1 getInstance() {
    14. return instance;
    15. }
    16. }