当我们在程序中启动了一个server(叫MyServer) ,这个MyServer需要跟另一个server(叫Server)之间通讯,为了增加效率需要建立一个连接池.当然,这个连接池要建立在MyServer端,当这个MyServer 忙碌或占用的时候会自动启用一个新的MyServer 或寻找闲置的MyServer.更让人烦恼的是,其实我的MyServer还是一个 server上层还有一群client 
在等着和它连接。恳请指点一下,这种连接池实现的基本方式或原理

解决方案 »

  1.   

    Socket连接池是为了减少高并发时创建和销毁连接对象时所消耗的资源。
    基本方式就是用Vector容器存贮Socket Instance, 自己控制链接池的容量,在getSocket()的时候判断Vector.size(), 如果没有,就让线程wait(), 在有socket放回池中的时候,用NotifyAll()通知其他等待线程,注意放回和取出操作的同步。基本模型应该就是这样吧。
    你说你的项目中有一堆client在等取结果,会不会因为等待时间过长造成Client Threads过多,把服务器搞定呢。不知道一般的连接池在这种环境中效率行不行?
      

  2.   

    和我正在做的项目一样不过具体实现和MyServer和Server之间是否长连接有关你可以在一个类里用Vector存储若干个连接类,
    需要synchronized(locker)从Vector中remove一个出来操作,用完再add进去,locker.notifyall也可以用线程池,可以动态增加减少处理线程,每个线程都有一个socketclient连接
    需要时直接将处理发往队列即可更让人烦恼的是,连接MyServer的client在MyServer和Server通讯时可能突然断掉,然后这边应该断掉重连才是,不好搞