论述题 14.  使用两种方法编写多线程环境下的Singleton模式,并比较这两种方法的特性。
【正确答案】    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是否为空,这个对象一旦被创建,在后期的调用过程中就不会进入同步的代码,因此,有更高的效率。
【答案解析】