设计模式笔记

单件模式

2017-05-17  本文已影响3人  dd85bd3cabef

很多对象其实只要一个,比如线程池,缓存,对话框,注册表等。

经典的单件模式##

代码:

public class Singleton {
    private static Singleton uniqueInstance;
    public static Singleton getInstance(){
        if(uniqueInstance==null){
            uniqueInstance = new Singleton();
        }
        return uniqueInstance;
    }
}

这里实现了延迟实例化。

多线程保护##

多线程编程的时候,可能会出现初始化多个不同的instance实例的情况。
这时候,只需要让getInstance设置成同步的就可以了
public static synchronized Singleton getInstance(){
}
但是这样会拖累系统

private volatile static Singleton uniqueInstance();
   ...
   public static Singleton getInstance(){
if(uniqueInstance==null){
synchronized{
(singleton.class);
}
}

这两种做法都是线程安全的。

上一篇 下一篇

猜你喜欢

热点阅读