论坛首页 Java企业应用论坛

学习单例模式

浏览 16574 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (6) :: 隐藏帖 (9)
作者 正文
   发表时间:2008-12-02  
楼主的贴倒是发的很多的哦
我一下午就看了你两个贴
呵呵
0 请登录后投票
   发表时间:2008-12-03  
netfork 写道
哎,管理员在哪里啊~~~
发现只要不是纯技术问题,均可以在论坛(非入门版)里混~

我觉得此人思想有点..每个人都是从不懂-学习-懂,为什么我以我的方式理解的东西不能写出来,最起码我是用心写的,你找管理员干嘛?难道我自己总结下干扰你了?
0 请登录后投票
   发表时间:2008-12-03  
这个主题贴改过吗 为什么我看着第二个例子没有问题啊
0 请登录后投票
   发表时间:2008-12-03  
同步getInstance确实不好,因为其实只是在 new Singleton 对象时需要同步,以后在每次获得实例时都同步了,会影响效率...建议使用双检锁判断生成实例...同时建议看一下<<Head first 设计模式>>里面谈到单例模式一章,有比较全面嘅解析
0 请登录后投票
   发表时间:2008-12-03  
星情泪 写道

这个主题贴改过吗 为什么我看着第二个例子没有问题啊

这个主题帖已改为正确的了,谢谢
0 请登录后投票
   发表时间:2008-12-03  
wangchao_17915566 写道
星情泪 写道

这个主题贴改过吗 为什么我看着第二个例子没有问题啊

这个主题帖已改为正确的了,谢谢

我说咧,看着咋没啥问题嗫。
0 请登录后投票
   发表时间:2008-12-03  
如果看过双单子,也不能避免存在多个实例。


还是感觉第一种实现适合java,而且也已经能达到目的了。

静态的肯定是只编译一次的,应该不会存在两个吧。
0 请登录后投票
   发表时间:2008-12-03  
使用synchronized是避免在多个线程同时访问getInstance方法时,会返回两个实例。现在一般不在方法上加synchronized,一般在getInstantce里面加,并且使用双check,以避免第二次调用getInstantce方法时,不会再进入synchronized里面。这种方式属于lazy Initialize

但我的写法如下,不是lazy的:

public class Singleton {

    private static final Singleton s = new Singleton();

    private Singleton() {
    }

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


前一阵JavaEye还有一个帖子,说一个老外推荐了一种singleton的写法。你可以找找那个帖子。
0 请登录后投票
   发表时间:2008-12-03  
很典型的 饿汉,懒汉式单例类吧
public class Singleton {  
 
    private static final Singleton s = new Singleton();  
 
    private Singleton() {  
    }  
 
    public static Singleton getInstance() {  
        return s;  
    }  
}

说是更符合java面向对象语言特点--推荐
0 请登录后投票
   发表时间:2008-12-04  
呵呵,这样的文章也上首页喔~~

怀疑JavaEye的水平了喔,开玩笑呵呵
1 请登录后投票
论坛首页 Java企业应用版

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