做了个简易的连接池 ,今天遇到个问题 就是  测试的时候我开12个线程请求连接,池中最大是10个连接数,当线程11进入请求的时候,10连接数已经都使用了 还没有返回连接池,这时就要抛异常, 我是想让线程11再等一下,再对连接池请求,那样其他线程使用的连接对象就返回池中了    我只是想了解下,连接池的实现原理,非常感谢,分不多哈 我所有的分了!

解决方案 »

  1.   

    要么wait(long n);
    要么yield();或者干脆不受理第11个线程的请求.
      

  2.   

    哈哈  终于找到办法了 先DBConnectionPool.class.wait(1000);延迟下,然后递归调用自己,
    不过应该有个调用的最大次数 在这个次数内执行
    if(reconn==null){
    if(count<=5){
    System.out.println("再次请求:"+count);
    try{
          DBConnectionPool.class.wait(1000);
          reconn=getConn();
    }catch(Exception e){
          e.printStackTrace();
    }
    }else{
      count=0;
    }
    }
    if(reconn==null){
    throw new PoolException("连接池中无可用对象");
    }