本帖最后由 java2000_net 于 2008-08-04 16:03:41 编辑

解决方案 »

  1.   

    private static  Resoure res=new Resoure();
    public static  Resource getResource(){
    retrue res;
    }
      

  2.   

    单态有两种形式:
    1.饿汉式:
    public class Singleton{
      // 在自己内部定义一个自己的实例
      // 注意,这个是private 只供内部调用
      private static Singleton instance = new Singleton();
      //将构造函数设为私有
      private Singleton(){
        }
       // 静态工厂方法,提供一个供外部使用得到对象的静态方法
      public static Singleton getInstance(){
              return instance;   
            }                                   
    }
    2. 懒汉式: public class Singleton{
        private static Singleton instance = null;
        private Singleton(){
                }
        public static synchronized Singleton getInstance (){
            if(instance==null)
            instance = new Singleton();       
            return instance;
            }
    }
      

  3.   

    public class Singleton {

    private static final Singleton instance = new Singleton();

    private Singleton(){}

    public static Singleton getInstance(){
    return instance;
    }

    }这是另一种单例模式。
      

  4.   

    第一种:
    public class Singleton { private volatile static final Singleton instance = null;private Singleton(){} public static Singleton getInstance(){ 
      if(instance==null) {
         synchronized(Singleton.class) {
             if(instance==null)
                instance = new Singleton();
         }
      }
      return instance;
    } } 第二种:
    public class Singleton { 
     private Singleton(){} private static class SingletonInner {
       static Singleton instance = new Singleton();
    }
    public static Singleton getInstance(){ 
       return SingletonInner.instance; 
    } }两种方法各有优缺点,看楼主自己选择!
      

  5.   

    public class Singleton {
      private static Singleton instance = null;
      private static Integer count = 0;
      private Singleton() { }
      public static Singleton getInstance() {
        if (instance == null) {
          synchronized (count) {
    if (count == 0) {
      instance = new Singleton();
      count = 1;
    } else {
      return instance;
    }
          }
        }
        return instance;
      }
    }可以添加一个计数器变量count,这样只有第一个占用的才创建新实例,以后的线程都会返回这个实例了