锁定老帖子 主题:java关于单例模式的一些疑问?
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2009-04-30
public static Singleton getInstance{
if(singleton == null){ synchronized(this){ if(singlenton == null){ singlenton = new Singlenton(); } } } return singleton; } ----------------------------- 这个性能比在外面加synchronized好多了 太精辟了 |
|
返回顶楼 | |
发表时间:2009-05-06
最后修改:2009-05-06
binlaniua 写道 public static Singleton getInstance{
if(singleton == null){ synchronized(this){ if(singlenton == null){ singlenton = new Singlenton(); } } } return singleton; } ----------------------------- 这个性能比在外面加synchronized好多了 太精辟了 这个程序编译得过去吗? 应该改成synchronized(Singlenton.class) |
|
返回顶楼 | |
发表时间:2009-05-06
本身就有问题~
|
|
返回顶楼 | |
发表时间:2009-05-06
我就说说我的理解吧:
问题一:声明私有的构造函数,是为了防止被其他类调用,否则的话,单例就不成立了。 问题二:开发单例的时候,主要是注意线程安全,即要保证在多线程运行的情况下,也不会发生线程同时访问一个变量的情况,所以,一般可以考虑为方法加"sychronized". 问题三:单例模式我知道的有懒汉式,和饱汉式。 问题四:这个还没有完全理解。 |
|
返回顶楼 | |
发表时间:2009-05-09
public class UserService {
private static final UserService userService = new UserService (); private UserService{ } public static UserService getInstance(){ return userService; } } 这个是懒汉式吧。。 采用的是预先加载的方式,UserService.class 当被载入的时候 就事先声明了对象; |
|
返回顶楼 | |
发表时间:2009-05-09
chenhua_1984 写道 dopic 写道 public static XXX getInstance (){
if(XXX==null){ synchronized(this){ XXX = new XXX(); } } return XXX; } Head First设计模式上的 谢谢!synchronized(this),这里的this具体怎么解释? this 代表的是 XXX.class |
|
返回顶楼 | |
发表时间:2009-05-12
wanglei50065842 写道 chenhua_1984 写道 dopic 写道 public static XXX getInstance (){
if(XXX==null){ synchronized(this){ XXX = new XXX(); } } return XXX; } Head First设计模式上的 谢谢!synchronized(this),这里的this具体怎么解释? this 代表的是 XXX.class 晕 this是实例 XXX.class 是static类型 怎么可能相同 |
|
返回顶楼 | |
发表时间:2009-05-15
private static Object ob = new Object();
sorry 这里应该是个对象 synchronized(ob){ ... } |
|
返回顶楼 | |
发表时间:2009-05-15
大家快自吻吧!都是我的错。没想当起了这么大反应,headfrist 在单例那一章写得很细,写了好几种单例,对每种单例都说明了各个的优缺点!
|
|
返回顶楼 | |