论坛首页 入门技术论坛

如此使用单例模式!

浏览 27399 次
该帖已经被评为新手帖
作者 正文
   发表时间:2009-01-21  
在UserRule类中
应有
private UserRule(){}


顺便问一下lz,什么情景下用到的单例模式
0 请登录后投票
   发表时间:2009-01-21  
晕 这是做的什么呀
0 请登录后投票
   发表时间:2009-01-21  
除单例实现有点问题,其它很好啊。。简洁到楼上的每个人都能看得懂。
0 请登录后投票
   发表时间:2009-01-21  
怎么就看出性能问题了?我还觉得性能提高了捏,虽然只是一点点
0 请登录后投票
   发表时间:2009-01-22  
评定再次没事找事的帖子,鉴定完毕
0 请登录后投票
   发表时间:2009-01-22   最后修改:2009-01-22
    private UserRule() {}
    public static [b]synchronized[/b] UserRule getInstance() {   
        if (instance == null) {   
            instance = new UserRule();   
        }   
        return instance;   
    }  


多线程的情况下,加上synchronized就可以了。

哦,还有就是构造函数一定要定义为 private。
0 请登录后投票
   发表时间:2009-01-22   最后修改:2009-01-22
zozoh 写道
#     public static UserRule getIn<script type="text/javascript" src="http://www.iteye.com/javascripts/tinymce/themes/advanced/langs/zh.js"></script>stance() {  
#         if (instance == null) {  
#             instance<script type="text/javascript" src="http://www.iteye.com/javascripts/tinymce/plugins/javaeye/langs/zh.js"></script> = new UserRule();  
#         }  
#         return instance;  
#     }

应该写成
public static UserRule getInstance() {   
	if (instance == null) {
		synchronized(UserRule.class){
			if (instance == null){
				instance = new UserRule();						
			}
		}
	}   
	return instance;   
}

以保证多个线程访问的安全



这个代码看上去也忒复杂了,而且有线程风险,性能上没有提高。
0 请登录后投票
   发表时间:2009-01-22  
skzr.org 写道
评定再次没事找事的帖子,鉴定完毕

,浪费时间,看了这么无聊的帖子。
0 请登录后投票
   发表时间:2009-01-22  
luanma 写道
    public static [b]synchronized[/b] UserRule getInstance() {   
        if (instance == null) {   
            instance = new UserRule();   
        }   
        return instance;   
    }  


多线程的情况下,加上synchronized就可以了。



你这个浪费性能。还是你楼上的实现好。
0 请登录后投票
   发表时间:2009-01-22  
如果在多线程的环境中我想会出现性能问题和安全问题.
很容易出现竞争问题,而且如果一旦出现竞争就会出现数据丢失的风险!
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics