}
public static Dd getInstence() {
Dd d = new Dd();
return d;
}
public static void sy() {
System.out.println(a);
}
}
你这个显然不可以,在多个线程执行的时候,如果执行到
Dd d = new Dd();的时候切换到另一个线程进入的话,调用这个方法就会又
执行Dd d = new Dd();,这样就会创建多个对象了。
一般的要在外面声明出对象,在获得对象的方法中直接返回,也就是说在返回的方法中有一句代码(饿汉式);
class Dd{
static int a;
private Dd() {
}
private static final Dd d = new Dd();
public static Dd getInstence() {
// Dd d = new Dd();
return d;
}
public static void sy() {
System.out.println(a);
}
}
懒汉式在你的代码public static Dd getInstence() 中加同步修饰:
饿汗式:在外部静态的创建出对象,而懒汉式实在获得对象方法中创建对象 ,想你写了两块代码。
一般的用饿汉式,比较快,省资源。 作者: 彭润生 时间: 2012-9-20 07:13
楼上说的很对,你这样就不是单例模式了,单例必须在getInstance里获取对象,而你的这个构造了对象,所以,每一次getInstance就会产生一个对象,所以就不是单例了。如果要单例那么就改为 在类里面定义这样的一个成员private static Dd d = new Dd();
然后public static Dd getInstance(){return d;}