JAVA 单例模式

饿汉式

public class SingletonTest {

    private static SingletonTest instance = new SingletonTest();

    private SingletonTest() {}

    public SingletonTest getInstance() {
        return instance;
    }
}

饿汉式

public class SingletonTest {

    private static SingletonTest instance = new SingletonTest();

    private SingletonTest() {}

    public SingletonTest getInstance() {
        return instance;
    }
}

双重检查

package com.zhf.study.test;

public class SingletonTest {

    private SingletonTest() {

    }

    private static volatile SingletonTest instance = null;

    public static SingletonTest getInstance() {
        if (instance == null) {
            synchronized (SingletonTest.class) {
                if (instance == null) {
                    instance = new SingletonTest();
                }
            }
        }
        return instance;
    }
}

静态内部类

public class SingletonTest {

    private SingletonTest() {

    }

    private static class SingletonHolder {
        private static final SingletonTest INSTANCE = new SingletonTest();
    }

    public static SingletonTest getInstance() {
        return SingletonHolder.INSTANCE;
    }
}

results matching ""

    No results matching ""