【正确答案】 public class Singleton
{
private static Singleton instance;
private Singleton(){)
public static synchronized Singleton getInstance()
{
if(instance==null){
instance=new Singleton();
}
return instance;
}
}
这种写法虽然是多线程安全的,但是每次使用getInstance方法都需要进行同步,因此,效率比较低。
public class Singleton
{
private volatile static Singleton singleton;
private Singleton(){
}
public static Singleton getSingleton()
{
if(singleton=null){
synchronized(Singleton.class)
{
if(singleton==null)
{
singleton=new Singleton();
}
}
}
return singleton;
}
}
这种方法会首先判断singleton是否为空,这个对象一旦被创建,在后期的调用过程中就不会进入同步的代码,因此,有更高的效率。
【答案解析】