在之前的ORM和DAO中发现 方法里都会有连接数据库的代码块
也就是在数据访问对象 当对象调用方法时 每一次调用都会与数据库创建连接 假设同时调用多个方法 那么创建的连接就非常多 和线程池设计的最初缘由一样——
创建连接和关闭连接的过程也是比较消耗时间的,当多线程并发的时候,系统就会变得很卡顿。
同时,一个数据库同时支持的连接总数也是有限的,如果多线程并发量很大,那么数据库连接的总数就会被消耗光,后续线程发起的数据库连接就会失败。
线程池考虑的时CPU的资源占用 而这个是考虑数据库本身支持的连接量
但是,数据库连接池和线程池实现设计思路不一样——这里首要解决的就是连接个数的限制 以及单个连接的循环利用
思路:
既然每次在调用DAO接口的方法时都会进行连接 避免此种情况的最佳方式就是将其分离出 放入数据库连接池里 每次需要连接就向数据库连接池借用 而不是在调用它时自个创建 借了还下一次或者其他线程使用。其连接总数量维持在限制范围中
并且,倘若发生多线程并发情况,连接池里的连接被借用光了,那么其他线程就会临时等待,直到有连接被归还回来,再继续使用。
整个过程,这些连接都不会被关闭,而是不断的被循环使用,从而节约了启动和关闭连接的时间。