jdbc 单例
来源:互联网 发布:小米电力猫网络密码 编辑:程序博客网 时间:2024/06/05 20:49
单例模式
代码
package utils;import java.io.IOException;import java.io.InputStream;import java.util.Properties;//读取数据库属性文件,获取数据库连接信息public class ConfigManager { private static ConfigManager configManager; private Properties properties; // 构造方法 方法名和类名一样 private ConfigManager() { String configFile = "database.properties"; // 把configFile通过ConfigManager类加载器的.getResourceAsStream方法读到输入流 InputStream in = ConfigManager.class.getClassLoader().getResourceAsStream(configFile); // IN通过properties.load方法load到properties对象里面去; properties=new Properties(); try { properties.load(in); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { try { if (in != null) { in.close(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } //提供给别人一个唯一的ConfigManager对象 public static ConfigManager getInstance(){ if(configManager==null){ configManager=new ConfigManager(); } return configManager; } // 根据属性文件中的键获得对应的值 public String getString(String key) { return properties.getProperty(key); }}
饿汉单例模式
//缺点为多线程时线程不安全//上来就new一个对象在内存存着,只要调用这个方法,就把对象给人private static ConfigManager configManager=new ConfigManager();public static ConfigManager getInstance(){ return configManager; }
懒汉单例模式
public static synchronized ConfigManager getInstance(){ if(configManager==null){ configManager=new ConfigManager(); } return configManager; }
懒汉单例模式
双重锁定
public static synchronized ConfigManager getInstance(){ if(configManager==null){ synchronized (ConfigManager.class){ if(configManager==null){ configManager=new ConfigManager(); } } } return configManager; }
阅读全文