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; }}
"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; }}
public XX (){return X}
* 在这个地方使用了懒汉式模式
*/
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;}
}
}
饿汉式是线程安全的,在类创建的同时就已经创建好一个静态的对象供系统使用,以后不在改变
懒汉式如果在创建实例对象时不加上synchronized则会导致对对象的访问不是线程安全的
推荐使用第一种