public class AppContext { private static AppContext instance; private AbstractApplicationContext appContext; public synchronized static AppContext getInstance() { if (instance == null) { instance = new AppContext(); } return instance; } private AppContext() { this.appContext = new ClassPathXmlApplicationContext(
"applicationContext.xml");
 //applicationContext.xml } public AbstractApplicationContext getAppContext() { return appContext; }}
我觉得此处public synchronized static AppContext getInstance() 这样不太好,理由是每次这方法,都要锁住,容易死锁,如网络有有堵塞时,
我认为改成这样较好:
请高手为我解惑.public class AppContext { private static AppContext instance=new AppContext();; private AbstractApplicationContext appContext; public synchronized static AppContext getInstance() { return instance; } private AppContext() { this.appContext = new ClassPathXmlApplicationContext(
"applicationContext.xml");
 //applicationContext.xml } public AbstractApplicationContext getAppContext() { return appContext; }}

解决方案 »

  1.   

    单例模式的写法有很多种 我比较喜欢在申明一个静态的对象时就new 对象 在构造方法里直接return 就OK了
      

  2.   

    private static XX X=new XX();
    public XX (){return X}
      

  3.   

    曾经老师教我们单例模式分饿汉式和饱汗式.饿汉式就是在最前面new一个实例.在构造函数中retrun出去..就是楼上那种.饱汉式就是在构造函数中去new..希望对你有帮助!!!
      

  4.   

    更正:分为懒汉式和饿汉式        /*
     * 在这个地方使用了懒汉式模式
     */
    private static MysqlConnector mysql = null; private MysqlConnector() {
    } public static MysqlConnector getInstance() {
    if (mysql == null) {
    mysql = new MysqlConnector();
    }
    return mysql;
    }饿汉式:
       public class Singleton{
          private static Singleton singleton = new Singleton ();
          private Singleton (){}
              public Singleton getInstance(){return singletion;}
          }  
       }
      

  5.   

      比较:
      饿汉式是线程安全的,在类创建的同时就已经创建好一个静态的对象供系统使用,以后不在改变
      懒汉式如果在创建实例对象时不加上synchronized则会导致对对象的访问不是线程安全的
      推荐使用第一种