解决方案 »

  1.   

    这个不难吧。
    基本原理:就是容器(比如说tomcat)会先创建一个装数据库连接的池,这个池一开始就有一定数量的池连接,然后用户要请求一数据库时,直接从池里拿一条连接用就行了,用的时候标明这个连接是忙的,其它用户就不能再用这个连接了,用完就把连接给放回池里,并标明这个连接是空闲的,其它用户可以拿去用啦。如果用户请求时,所有连接都为忙,那容器会根据配置考虑是否需要再创建一些连接到池里,如果不创建,其它用户再请求时,就必须等待别的用户释放连接了。举个例子:学校的图书馆本来有10本A类书(创建池),学生S1借走了一本(用户请求),那它这本就不可能被别的学生借了(标志忙),必须等S1还回来(标志空)的时候别的学生才能借,但这时别的学生可以借另外9本A类书,假如有很多学生(超出10个)都经常需要借A这类书,学校可能会考虑再买一定数量的A类书(扩充池)。为什么要用:创建数据库连接需要花费的时间很长,如果服务器一开始就帮创建好连接了,等用户请求到来就直接拿来用,岂不是省去了很多时间?就比如上面的例子,A类书很贵,一个学生买起来很困难,那由学校统一买了(学校有钱嘛),学生要用就直接去借,这就省了学生很多钱啦。
      

  2.   


    1:机制  其实就是使用一个列表    可以理解成linkedlist  先进先出     初始化的时候 创建多个连接 到列表里面  注意 是冲头部进去  获取的时候 从尾部remove出来   当然 获取 和添加的时候 要有线程安全控制  设置个线程安全async  锁上  保证这个步骤是线程安全的。避免一个资源被多个地方同时使用。然后就是 连接多的时候就释放  少的时候就回收喽。
    2:好处就不用多说,简单点就是节省资源时间  。要知道 创建连接是要话费资源和时间的    如果一个请求到来才去创建连接 然后再做逻辑操作   响应的时间就长了,资源还没计算在内。 如何并发量大的话  比如1000持续几分钟   估计服务器都挂了  连接池就是避免频繁创建和释放连接用的 。
    注:各位大神  小弟说错了的话   你们就当没看见  这是我自己的看法  表喷我!
      

  3.   

    个人理解:连接池的本质是一个容器 、集合,且有最小的容量和最大容量跟当前的容量,且池子中有连接的方法和释放的方法。当项目已发布的时候,开始数据库先建立里好连接,用户真的在请求servlet的时候,用户直接到池子里去拿个连接,该链接现在就不耗时,直接就可以连接数据库了,当下一个用户来访问的时候,访问servlet的时候,就可以到连接池里去找另外一个没有连接,继续连接数据库,这样子的话就提高了效率。这样就是在没有要使用数据库之前的时候,就已经连接好,然后进行缓存,用户要用的时候可以直接来拿连接。
      

  4.   

    1. 连接的重复实用,提高性能。
    2. 连接如果没有被程序员手动的close,超时候会自动的被close。