设计模式 单例

来源:互联网 发布:云舒网络 拖欠工资 编辑:程序博客网 时间:2024/05/23 11:50

Singleton设计模式

1.使用时生成(非线程安全)

java code

class Singleton {    private static Singleton instance = null;    private Singleton() {}    public static Singleton getInstance() {        if (instance == null) {            instance = new Singleton();        }        return instance;    }}public class SingletonMode {    public static void main(String[] args) {        Singleton instance1 = Singleton.getInstance();        Singleton instance2 = Singleton.getInstance();        if (instance1 == instance2) {            System.out.println("singleton");        } else {            System.out.println("not singleton");        }    }}

修改获得实例方法来保证线程安全

1 使用方法同步

java code

public static synchronized Singleton getInstance() {    if (instance == null) {        instance = new Singleton();    }    return instance;}

2 使用类实例同步

java code

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

2.初始化加载(线程安全)

java code

class Singleton {    private static final Singleton instance = new Singleton();    private Singleton() {}    public static Singleton getInstance() {        return instance;    }}public class SingletonMode {    public static void main(String[] args) {        Singleton instance1 = Singleton.getInstance();        Singleton instance2 = Singleton.getInstance();        if (instance1 == instance2) {            System.out.println("singleton");        } else {            System.out.println("not singleton");        }    }}
0 0
原创粉丝点击