public class ConnectionPool { private static ConnectionPool pool=new ConnectionPool(); //构造方法私有了 private ConnectionPool(){ } public static ConnectionPool getPool(){ return pool; } }
//反射能够破怀单例,对象序列化也能破坏,对象的序列化说到底还是反射, //单例不要直接或间接的实现序列化接口 public class ConnectionPoolA { private static ConnectionPoolA pool; private ConnectionPoolA(){ } //这种方式多线程可能导致不是单例,所以要加锁 public static synchronized ConnectionPoolA getPool(){ if(pool==null){ pool=new ConnectionPoolA(); } return pool; } }
public class Application { public static void main(String[] args) { ConnectionPool p1=ConnectionPool.getPool(); } }