您的位置:首页 > 编程语言 > Java开发

Java并发程序设计(八)设计模式与并发之单例模式

2017-09-18 14:59 127 查看

设计模式与并发之单例模式

简单的单例实现;

public class Singleton {

private Singleton(){
System.out.println("Creating Singleton");
}

private static Singleton instance=new Singleton();

public static Singleton getInstance(){
return instance;
}
}

缺点:何时产生实例,不好控制。

延迟加载,需要instance才去创建:

1 /**
2  * @author: Tang Jiujia
3  * @version: 2017/9/18 0018 14:44
4  */
5 public class LazySingleton {
6
7     private LazySingleton(){
8         System.out.println("LazySingleton created!");
9     }
10
11     private static LazySingleton instance=null;
12
13     public static synchronized LazySingleton getInstance(){
14         if(instance==null){
15             return new LazySingleton();
16         }
17         return instance;
18     }
19 }

缺点:并发条件下加锁,影响性能。

利用静态内部类实现单例,客服以上两种方法的缺陷:

1 /**
2  * @author: Tang Jiujia
3  * @version: 2017/9/18 0018 14:53
4  */
5 public class StaticSingleton {
6
7     private StaticSingleton(){
8         System.out.println("StaticSingleton created!");
9     }
10
11     private static class SingletonHolder{
12         private static StaticSingleton instance=new StaticSingleton();
13     }
14
15     public static StaticSingleton getInstance(){
16         return SingletonHolder.instance;
17     }
18 }

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: