论坛首页 入门技术论坛

java关于单例模式的一些疑问?

浏览 15028 次
该帖已经被评为新手帖
作者 正文
   发表时间:2009-04-29  
public static XXX getInstance (){
   if(XXX==null){
       synchronized(this){
         XXX = new XXX();
         }
    }
return XXX;
}
Head First设计模式上的
0 请登录后投票
   发表时间:2009-04-29  
java 1.2 singleton时构造行数为private时,java内存回收时,会被回收掉的
0 请登录后投票
   发表时间:2009-04-29  
dopic 写道
public static XXX getInstance (){
   if(XXX==null){
       synchronized(this){
         XXX = new XXX();
         }
    }
return XXX;
}
Head First设计模式上的

谢谢!synchronized(this),这里的this具体怎么解释?
0 请登录后投票
   发表时间:2009-04-29  
对象互斥

不过我觉得有问题

不是

  synchronized(Class.yourClass){
...
}

么?????
0 请登录后投票
   发表时间:2009-04-29  
chenhua_1984 写道

谢谢!synchronized(this),这里的this具体怎么解释?

对象锁,对象锁被某个线程拿到后,其他的线程不能访问该资源,直到该对象锁被释放,也可以叫同步锁。
0 请登录后投票
   发表时间:2009-04-29  
C_J 写道
对象互斥

不过我觉得有问题

不是

  synchronized(Class.yourClass){
...
}

么?????

括号内的可以是任何对象,包括String,Class对象,你自己声明个object也没有问题,前提是该对象锁能确保不被其他线程所持有
0 请登录后投票
   发表时间:2009-04-29  
package corejava.exam;

public class SingletonFactory {
private static SingletonFactory factory;
private static Object classclick = SingletonFactory.class;

private SingletonFactory() {
}

public static SingletonFactory newInstance() {
synchronized (classclick) {
if (factory == null)
factory = new SingletonFactory();
}
return factory;
}
}
0 请登录后投票
   发表时间:2009-04-29  
锁应该是不让两个程序同时实例化singleton对象
给本类的class描述对象加锁我觉得最简单有效
搂住请见设计模式一书。
0 请登录后投票
   发表时间:2009-04-29   最后修改:2009-04-29
iaimstar 写道
C_J 写道
对象互斥

不过我觉得有问题

不是

  synchronized(Class.yourClass){
...
}

么?????

括号内的可以是任何对象,包括String,Class对象,你自己声明个object也没有问题,前提是该对象锁能确保不被其他线程所持有


不是,我的意思是你有看到他的方法是static么?

static是在JVM加载的时候就加载到静态去了

而这里的this的语义是"对象".
所以这里应该锁的是“类” 而非“对象”
所以我认为这里不应该是this.
0 请登录后投票
   发表时间:2009-04-29  
hot66hot 写道
锁应该是不让两个程序同时实例化singleton对象
给本类的class描述对象加锁我觉得最简单有效
搂住请见设计模式一书。



你的措词就有问题,  怎么可能是“程序”,

0 请登录后投票
论坛首页 入门技术版

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