开发者社区> 问答> 正文

servlet中的一个共享数据源有没有必要为其加上synchronized?

我写了一个servlet,这个servlet高并发的可能性很大,为了节省连接数据库的开销,我在这个servlet的生命周期最开的时候(或者servlet实例生成的时候)生成一个数据源,然后希望以后的每一个线程都去使用这个数据源,这样会不会产生多线程同步问题?有没有必要加上synchronized?我使用的是tomcat7带的jdbc.pool连接池。如果每次都要重新生成连接池的话开销一定很大,想请教一下大家是怎么做的!!!

展开
收起
小旋风柴进 2016-03-05 11:57:04 2759 0
1 条回答
写回答
取消 提交回答
  • 会出现你说的问题,不用加同步吧,多连接会慢死的。因为你已经有连接池了,只要正常open与close就可以了。
    1、最好不让上servlet长期占用jdbc连接(减小并发),你可以写个dao来完成数据读取。再输出显示。
    可以这样理解
    List result=dao.read(..);//读取数据库,dao中完成open,resultset,close(注意close的写法)

    for(){
     输出页面
    }

    2、或者调一调连接池的大小与性能指标,或换高性能连接池如BoneCP。

    如果你用jndi获取的是tomcat7的连接池,不会有大开销。不然就不叫连接池了。

    2019-07-17 18:53:09
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载