码迷,mamicode.com
首页 > 编程语言 > 详细

菜鸟成长日记:Java基础篇3 --- 单例模式

时间:2017-09-26 19:35:52      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:延迟   zed   alac   提高效率   div   饿汉   private   演示   public   

单例模式分为懒汉式和饿汉式,以下是两者的比较:

1、 饿汉式立即加载,在类加载时就创建了一个对象,供外部使用。

懒汉式延迟加载,在被调用时才创建对象。

2、 根据上面的特性可以知道:

饿汉式是线程安全的,懒汉式会导致对对象的访问不是线程安全的,此时应注意使用

Synchronized关键字。

3、 两者各有优点同时也各有问题,懒汉式延迟加载提高效率,饿汉式线程安全。

在效率和安全之间要根据业务权衡

 

下面是工作中遇到实例,是一个cache实例:

第一个懒汉式

 1 /**
 2  * 玩家开服嘉年华礼包
 3  * @author wangchong
 4  * @date 2017年8月25日 上午10:51:31
 5  */
 6 public class PlayerInitialActivityCache extends PlayerTimeIdleCache<PlayerInitialActivity> {
 7 
 8     private static final PlayerInitialActivityCache instance = new PlayerInitialActivityCache();
 9 
10     private PlayerInitialActivityCache() {
11         super(true, DateTimeUtil.MINUTE * 10);
12     }
13 
14     public static PlayerInitialActivityCache getInstance() {
15         return instance;
16     }
17 }

下面的饿汉式只是演示的需要临时改的,真正使用时不推荐

 1 /**
 2  * 玩家开服嘉年华礼包
 3  * @author wangchong
 4  * @date 2017年8月25日 上午10:51:31
 5  */
 6 public class PlayerInitialActivityCache extends PlayerTimeIdleCache<PlayerInitialActivity> {
 7 
 8     private static PlayerInitialActivityCache instance = null;
 9 
10     private PlayerInitialActivityCache() {
11         super(true, DateTimeUtil.MINUTE * 10);
12     }
13 
14     public static PlayerInitialActivityCache getInstance() {
15         if (instance == null) {
16             instance = new PlayerInitialActivityCache();
17         }
18         return instance;
19     }
20 }

 

菜鸟成长日记:Java基础篇3 --- 单例模式

标签:延迟   zed   alac   提高效率   div   饿汉   private   演示   public   

原文地址:http://www.cnblogs.com/kuangbendecaichong/p/7598024.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!