锁定老帖子 主题:java关于单例模式的一些疑问?
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2009-04-29
public static XXX getInstance (){
if(XXX==null){ synchronized(this){ XXX = new XXX(); } } return XXX; } Head First设计模式上的 |
|
返回顶楼 | |
发表时间:2009-04-29
java 1.2 singleton时构造行数为private时,java内存回收时,会被回收掉的
|
|
返回顶楼 | |
发表时间:2009-04-29
dopic 写道 public static XXX getInstance (){
if(XXX==null){ synchronized(this){ XXX = new XXX(); } } return XXX; } Head First设计模式上的 谢谢!synchronized(this),这里的this具体怎么解释? |
|
返回顶楼 | |
发表时间:2009-04-29
对象互斥
不过我觉得有问题 不是 synchronized(Class.yourClass){ ... } 么????? |
|
返回顶楼 | |
发表时间:2009-04-29
chenhua_1984 写道 谢谢!synchronized(this),这里的this具体怎么解释? 对象锁,对象锁被某个线程拿到后,其他的线程不能访问该资源,直到该对象锁被释放,也可以叫同步锁。 |
|
返回顶楼 | |
发表时间:2009-04-29
C_J 写道 对象互斥
不过我觉得有问题 不是 synchronized(Class.yourClass){ ... } 么????? 括号内的可以是任何对象,包括String,Class对象,你自己声明个object也没有问题,前提是该对象锁能确保不被其他线程所持有 |
|
返回顶楼 | |
发表时间: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; } } |
|
返回顶楼 | |
发表时间:2009-04-29
锁应该是不让两个程序同时实例化singleton对象
给本类的class描述对象加锁我觉得最简单有效 搂住请见设计模式一书。 |
|
返回顶楼 | |
发表时间:2009-04-29
最后修改:2009-04-29
iaimstar 写道 C_J 写道 对象互斥
不过我觉得有问题 不是 synchronized(Class.yourClass){ ... } 么????? 括号内的可以是任何对象,包括String,Class对象,你自己声明个object也没有问题,前提是该对象锁能确保不被其他线程所持有 不是,我的意思是你有看到他的方法是static么? static是在JVM加载的时候就加载到静态去了 而这里的this的语义是"对象". 所以这里应该锁的是“类” 而非“对象” 所以我认为这里不应该是this. |
|
返回顶楼 | |
发表时间:2009-04-29
hot66hot 写道 锁应该是不让两个程序同时实例化singleton对象
给本类的class描述对象加锁我觉得最简单有效 搂住请见设计模式一书。 你的措词就有问题, 怎么可能是“程序”,汗 |
|
返回顶楼 | |