由于某些链接或对象,系统中的各个用户可以共享使用,并不需要销毁操作。因此可以将这些链接或对象保留到一个池中,这样可以节省系统资源的开销。
1、要有一个链表用来储存
2、在类的静态加载中声明构造
3、每一次使用,是对池中对象的释放
4、每一次用完,是对池中对象的追加
5、我认为,用双向链表和单向链表都可以(栈和队列)
----------------------------------------------------------------------------------------*************我是华丽的分割线*************----------------------------------------------------------------------------------------
Java代码实例(数据库连接池):
实现:
package gaideng.util; import java.io.IOException; import java.io.InputStream; import java.sql.Connection; import java.sql.Driver; import java.sql.DriverManager; import java.sql.SQLException; import java.util.LinkedList; import java.util.Properties; public class DBConnUtil { //连接池 private static LinkedList<Connection> SQLlink=new LinkedList <Connection>(); static { String ClassName=""; String url=""; String users=""; String pwd=""; int LinkSize=0; InputStream in=DBConnUtil.class.getClassLoader().getResourceAsStream("dbinfo.properties"); Properties pro=new Properties(); try { pro.load(in); ClassName =pro.getProperty("ClassName"); url =pro.getProperty("url"); users =pro.getProperty("users"); pwd =pro.getProperty("pwd"); LinkSize=Integer.parseInt(pro.getProperty("LinkSize")); for(int i=0;i<LinkSize;i++) { Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); Connection conn=DriverManager.getConnection(url, users, pwd); SQLlink.add(conn); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
参照:http://blog.csdn.net/shuaihj/article/details/14223015