想要完成一个多线程操作数据库的程序,读很多,写比较少.可否保留一个全局的Connection不关闭,专门供给每一个线程用于读操作.而在每个线程写的时候用ThreadLocal申请一个新的Connection与之绑定来实现写入操作.这样可行吗?能对性能有提高吗?还有一个问题,ThreadLoca是对每个线程生成一个Connection副本绑定在线程对象中,如果达到连接数上限制了这么办?用数据连接池和ThreadLocal可以结合使用并解决这个问题吗?比如用数据连接池来管理所有连接,用ThreadLocal来生成连接并绑定.在线程池要求关闭的时候,主动让ThreadLocal解除绑定.这样是可行吗?希望大家能有帮小弟解惑~万分感谢.

解决方案 »

  1.   

    不是数据连接池,我是问的我自己的一种想法.数据连接池是它在管理所有的连接,分配未使用的连接进行复用.但是无论读取都要从池中取出才能操作.我的想法是保留一个全部连接,多线程的读操作都用那个保留的连接.而每一线程的写入操作必须从连接池中取出新的连接来实现,这样可行吗?可以提高效率吗?不同的Connection之间是不存在同步问题的,我这样的把写都用不同的Connection分开,读全部用一个Connection来读可行不?
      

  2.   

     
     Connection只有当前连接,不能多个流同时使用一个Connection